《Go语言高级编程》笔记

132 阅读1分钟

Go语言的骚操作——记录一些骚操作

  1. Go支持UTF-8,有限定大写才可以导出,那我想定义一个中文可导出函数怎么办?
  2. 定义一个占用内存为零,又可以用的数组。
var times [5][0]int
for range times {
  fmt.Println("hello")
}
  1. 上面的方式也可以用在通道中,用来处理:只需要通知不关心值的场景。不过一般更喜欢用匿名结构体:
c2 := make(chan struct{})
go func() {
    fmt.Println("c2")
    c2 <- struct{}{} // struct{}部分是类型,{}表示对应的结构体值
}()
<-c2
  1. 初看很奇怪,细看又很合理。
s := "hello, world"
hello := s[:5]
world := s[7:]
s1 := "hello, world"[:5]
s2 := "hello, world"[7:]

日常笔记

  1. Slice的结构
type SliceHeader struct {
    Data uintptr
    Len  int
    Cap  int
}
  1. 切片是指向了底层数组,所以要防止内存泄露——底层数据不适用,但是得不到回收。解决方法:根据需求,可以cop一个新的切片中——新建切片,然后append。