后端与 Go语言基础–基础语法 | 青训营笔记

61 阅读3分钟

「 后端与 Go语言基础–基础语法 | 青训营笔记」

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

下面的笔记内容记录着自己在学习课程中遇到的疑问以及学完课程后还能回想起的一些特殊记忆点

Go有什么优点

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态链接
  6. 快速编译
  7. 跨平台
  8. 垃圾回收

特殊的日期格式化要求:2006-01-02 15:04:05

t := time.Date(2022, 3, 27, 1, 25, 36, 0, time.UTC)
t.Format("2006-01-02 15:04:05")
t3, err := time.Parse("2006-01-02 15:04:05", "2022-03-27 01:25:36")

这个时间组合似乎是 Go 语言开发者特别设计的,据说这么设计的目的是解决大家记忆问题(按 ANSIC 标准的日期格式2333)

1234567
MST 时区
1 月2日下午3时(15)4分5秒2006年

nil 标识符

  1. 在Go语言中,布尔类型的零值(初始值)为 false,数值类型的零值为 0,字符串类型的零值为空字符串"",而指针、切片、映射、通道、函数和接口的零值则是 nil。
  2. nil 是Go语言中一个预定义好的标识符,有过其他编程语言开发经验的开发者也许会把 nil 看作其他语言中的 null(NULL),其实这并不是完全正确的,因为Go语言中的 nil 和其他语言中的 null 有很多不同点。
    1. nil 标识符是不能比较的
    2. nil 不是关键字或保留字
    3. nil 没有默认类型
    4. 不同类型 nil 的指针是一样的
    5. 不同类型的 nil 是不能比较的
    6. 两个相同类型的 nil 值也可能无法比较
    7. nil 是 map、slice、pointer、channel、func、interface 的零值
    8. 不同类型的 nil 值占用的内存大小可能是不一样的

字符串处理

  1. strconv
  2. 字符串转数字:strconv.Atoi()
  3. 数字转字符串:strconv.Itoa()

defer 关键字

  1. Go语言的 defer 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。
  2. 关键字 defer 的用法类似于面向对象编程语言 JavaC# 的 finally 语句块,它一般用于释放某些已分配的资源,典型的例子就是对一个互斥解锁,或者关闭一个文件。
  3. 就目前接触的情况来看,defer 常用于保证资源最终能够关闭