1,golang 的变量初始化引用关系图:
2,一些特性
@1,slice 特性:
在slice中,当len小于cap 的值的时候, 进行append 操作是不会造成内存的重新分配。这会导致
两个问题:1,对原slice修改会同步到新的slice;2,如果原slice过大比如文件,可能导致内存泄露。
如果想要复制slice又要隔离原slice,采用如下的方法:
a2 = make([]int, 0)
a2 = append(a2, a1...)
go.mod 是什么鬼东西?
和 GOPATH 又是什么关系?
@2,理解 channel
写channel协程,如果channel满了,会一直阻塞,直到channel有空位置可往里面写。
读channel协程,如果channel为空,也会一直阻塞,直到channel里面有数据可读。
@3,一个map变量占用多少个字节
8个字节
@4,map赋拷贝的误用:
IpPortMp map[string]*PortInfo
IpPortMp map[string]PortInfo
if v, ok := or.IpPortMp[key]; ok {
v.xxx1 = xxx2 //对 IpPortMp map[string]PortInfo 而言是无效的!
}