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 而言是无效的!

}