函数-defer

在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等),为了在函数执行完毕后,及时的释放资源,go的设计者提供defer(延时机制)。

细节说明:

1:当go执行到一个defer时,不会立即执行defer后的语句,而是将defer后的语句压入一个栈中,然后继续执行函数下一个语句。

2:当函数执行完毕后,再从defer栈中,一次从栈顶取出语句执行(遵守栈 先入后出的机制)

3:在defer将语句放入栈时,也会将相关的值拷贝同时入栈。

4:在go中编程创建资源(比如:数据库连接、文件句柄、锁等),之后可以执行

defer file.Close() defer connect.Close()

这样在defer后可以继续使用创建资源,当函数完毕后,系统会依次从栈中取出语句关闭资源,这种机制非常简洁,可以让程序员不用再为在什么时候关闭资源而烦心。


变量作用域

1)函数内部声明/定义的变量叫局部变量,作用域仅限于函数内部。

2)函数外部声明/定义的变量叫全局变量,作用域在整个包都有效,如果其首字母为大写,则作用域在整个程序有效。

3)如果变量时在一个代码块,比如for/if中,那么这个变量的作用域就在该代码块


字符串中常用的函数

1:统计字符串的长度,按字节 len(str)

2:字符串遍历,同时处理有中文的问题 r:=[]rune(str)

3:字符串转整数: n,err := strconv.Atol("12")

4:整数转字符串 str = strconv.Itoa(12345)

5: 字符串转 []byte : var bytes = []byte("hello go")

6:[]byte 转字符串 : str = string([]byte{99,22,33})

7:10进制转2,8,16进制: str = strconv.Formatlnt(123,2)

8:查找子串是否在指定的字符串中: strings.Contains("seafood","foo") //true

9:统计一个字符串有几个指定的子串 : strings.Count("cheese"."e") //3

10:不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(strings.EqualFold("abc","Abc")) //ture

11: 返回子串在字符串第一次出现的index值,如果没有就返回-1:

strings.Index("NLT_abc","abc") //4

12:返回子串在字符串最后一次出现的index,如没用返回-1。

strings.LastIndex("go_golang","go") //3

13:将指定的子串替换成 另外一个子串:

strings.Replace("go go hello","go","go语言".n)

n可以指定你希望替换几个,如果n=-1,表示全部替换。

14:按照指定的某个字符,为分隔标识,将一个字符串拆分成字符串数组。

stings.Split("Hello,wrold,ok",",")

15:将字符串的字母进行大小写的转换:

strings.ToLower("GO") // strings.ToUpper("Go")//GO

16:将字符串左右两边的空格去掉:

strings.TrimSpace(" tn a long gopher ntrn ")

17:将字符串左右两边指定的字符去掉 :

strings.Trim(" ! hello ! ", "!") //hello

18:将字符串左边指定的字符去掉:

strings.TrimLeft(" ! hello ! ", "!") //hello!

19:将字符串右边指定的字符去掉:

strings.TrimRight(" ! hello ! ", "!") // !hello

20: 判断字符串是否以指定的字符串开头:

strings.HasPrefix("ftp:///321231231231","ftp") //true

20: 判断字符串是否以指定的字符串结束:

strings.HasSuffix("ftp:///321231231231.jpg","abc") //false


时间和日期相关函数

2006/01/02 15:04:05 这个字符串的各个数字是固定的,必须这样写

时间的常量

常量的作用;在程序中可用来获取指定时间单位的时间,比如想得到100毫秒即:

100 * time.Millisecond // time.second / 10 这种写法就是错误的

2)休眠

func Sleep (d Duration)

3)获取当前的unix时间戳 和 unixnano 时间戳 (作用是可以获取随机数字)

题目练习:编写一段代码来统计函数test()运行时间

golang 时间戳_go语言学习笔记(13)-defer函数、字符串常用函数和时间日期函数...相关推荐

  1. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  2. 安装成功配置环境变量_go语言学习笔记-Windows10开发环境安装和环境变量配置

    相关文档 go语言学习笔记-目录 1.安装 1.1.访问 https://golang.google.cn/dl/ 或 https://golang.org/dl/ 下载官方安装包 1.2.选择Win ...

  3. golang 执行sql语句_Go语言学习笔记(Golang操作MySQL数据库)

    GO连接MySQL 通过GO页面作为客户端访问数据库 1.因为GO语言没有提供任何官方数据库驱动,所以需要安装第三方函数库. 2.由于在github上安装,所以需要安装git软件,安装过程一直点击下一 ...

  4. c语言13 6,C语言学习笔记13

    局部变量与全局变量: 局部变量: 在一个函数内部定义的变量是局部变量.这些变量声明在函数内部,不能被其他函数所使用. 函数的形式参数也属于局部变量,作用范围是函数内部. 在语句范围内声明的变量仅在该语 ...

  5. 翁恺老师C语言学习笔记(十一)字符串

    字符数组 如果我们定义了这样的一个字符数组 char word[] = {'H','e','l','l','o','!'}; word[0] H word[1] e word[2] l word[3] ...

  6. go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  7. go var type 互转_Go语言学习笔记(第九章) 结构体

    Go语言基础之结构体 Go语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念.Go 通过类型别名(alias types)和结构体的形式支持用户自定义 ...

  8. c++ 一个函数包括多个返回值判断_go语言学习笔记(10)-函数、包的使用

    跳转控制语句-continue 1:continue语句用于结束本次循环,继续执行下一次循环. 2:continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面 ...

  9. r语言rank降序_R语言学习笔记:sort、rank、order、arrange排序函数

    R语言中排序有几个基本函数:sort().rank().order().arrange() 一.总结 sort()函数是对向量进行从小到大的排序 rank()函数返回的是对向量中每个数值对应的秩 or ...

最新文章

  1. 面试「计算机操作系统」知识点大集合!
  2. 利用Excel导入数据到SAP C4C
  3. Ansible: hosts文件拆分为inventory和定义inventory全局变量
  4. Java基础学习总结(171)——CountDownLatch 使用总结
  5. QTcpSocket 发送和接收数据的几种方法
  6. 前端工程师技能之photoshop巧用系列第一篇——准备篇
  7. 【数字图像处理】(matlab入门1)
  8. 作为程序员,你一般用什么软件画流程图时序图和状态图等?
  9. 《Fortran95程序设计》(彭国伦)
  10. 层次分析法原理及应用案例
  11. Flexbox在button/fieldset/legend中(比如safair)失效问题
  12. 基于STM32的ESP8266模块控制多路继电器
  13. “eclipse在编译代码时运行结果始终是之前程序的结果”如何解决?
  14. Python:开发语言简介
  15. 如何统计代码总行数:指令
  16. 1037: 四则运算 C语言
  17. 按键精灵官网版 v9.63.12960 绿色版
  18. 五轴数控转台_五轴机床有很多种类型,你都知道吗?
  19. 【数据库】PLSQL Developer中文乱码问题解决
  20. Python实现可以语音聊天的桌面宠物程序

热门文章

  1. 【Statistics】均值
  2. 简单的通用TreeView(WPF)
  3. 当relative遇上z-index,半透明度不阻断事件捕获
  4. 蓝牙协议栈中的 OSAL
  5. Sharing A Powerful Tool For Calculate Code Lines
  6. 关于excel导出问题
  7. Deppin系统 Liunx显示器分辨率异常解决方法
  8. 【实践】汽车之家推荐系统排序算法迭代之路.pdf(附下载链接)
  9. Truncated Signed Distance Function: Experiments on Voxel Size
  10. 通俗易懂!视觉slam第三部分——slam数学表示