golang 变量、init、main执行流程

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

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值