golang笔记

本文探讨了Go语言中几个重要的编程技巧:map元素的正确使用方式、空结构体的应用场景、切片与数组的区别及注意事项、init方法的合理组织以及如何检测程序中的竞态条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、map中的元素是无法取地址的,即:map[string]struct类型,取&map["tmp"]是错误的

   cannot assign to struct field elem["count"].count in map

2、空结构体struct{}{}是唯一的,地址都是同一个,不分配内存空间,通常可用来做为信号,在chan中传递

3、切片,从数据生成的切片,修改切片中的内容,会相应修改底层数组中的数据,值得注意的是,在对切片执行append后会为切片重新分配底层数据,就是此时再做修改不会影响到最原始的数据内容了

4、虽然一个包中可以有多个init方法,但是建议只保留一个,避免出现多人开发或时间长久导致的不可预知的混乱错误

5、要检测程序是否存在竞态条件,可以在运行或测试程序的时候追加-race标记,检测结果会被打印到输出中。如go test -race

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值