Go语言细节提升

strings.Builder

在Go 语言中,字符串是只读的,也就意味着每次修改操作都会创建一个新的字符串。如果需要拼接多次,应使用 strings.Builder,最小化内存拷贝次数。

var str strings.Builder

func main(){
  str.WriteString("hello")
  fmt.Println(str.String())
}

判断map里面是否包含某个key

if val, ok := dict["foo"]; ok{
  // do someting what you want to do
}

多个defer语句

当存在多个defer语句的时候,go是遵循后进先出的栈结构,从最后一个defer开始往前运行
defer 可以修改全局变量,修改不了局部变量

func main(){
  defer func(){
    fmt.Println("第一个defer")
  }()
  defer func(){
    fmt.Println("第二个defer")
  }()
}

空struct类型

// 创建并打印一个空struct
// 第一个大括号是定义,第二个大括号是实例化
fmt.Println(struct{}{})

空struct类型不占用内存空间,所以可以用于并发的时候的chan,实现类似锁的作用

posted @ 2020-12-04 12:00  PHSix  阅读(140)  评论(0)    收藏  举报