golang基础

在函数调用时,像切片(slice)、字典(map)、接口(interface)、通道(channel)这样的引用类型 都是默认使用引用传递(即使没有显示的指出指针)

切片提供了计算容量的函数 cap() 可以测量切片最长可以达到多少:它等于切片的长度 + 数组除切片之外的长度。如果 s 是一个切片, cap(s) 就是从 s[0] 到数组末尾的数组长度。切片的长度永远不会超过它的容量,所以对于 切片 s 来说该不等式永远成立: 0 <= len(s) <= cap(s) 。

s := make([]byte, 8)
fmt.Println(len(s))//5
fmt.Println(cap(s))//5
s = s[2:4]
fmt.Println(len(s))//2
fmt.Println(cap(s))//6

如果想知道当前的内存状态,可以使用:

func main() {
   //自身占用 单位KB
   memStat := new(runtime.MemStats)
   runtime.ReadMemStats(memStat)
   mem := uint64(10)
   mem = memStat.Alloc
   fmt.Printf("%d\n", mem/1024)
}