go 协程使用陷阱
来源:互联网 发布:看美股用什么软件 编辑:程序博客网 时间:2024/06/04 20:11
golang 语言协程
协程中使用全局变量、局部变量、指针、map、切片等作为参数时需要注意,此变量的值变化问题。 与for 循环,搭配使用更需谨慎。
1、内置函数时直接使用局部变量,未进行参数传递
func main() { for i := 0; i < 100; i++ { go func() { fmt.Println(i) }() }}
运行效果
func main() { for i := 0; i < 100; i++ { go func(i int) { fmt.Println(i) }(i) }}
运行效果
2。地址传递的参数
type Per struct { name string bh int}func main() { p := &Per{} for i := 0; i < 100; i++ { p.bh = i go func(p *Per) { fmt.Println(p) }(p) }}
分析: 导致以上非实际结果的原因是,go 之后并非立即启动协程的。
0 0
- go 协程使用陷阱
- Go for的三重陷阱
- 如何避开 Go 中的各种陷阱
- Go无缓冲通道的陷阱
- 使用Go 协程对web站点进行压力测试
- 避免使用实例陷阱
- 使用 AOP 陷阱之一
- 异常使用陷阱
- memset、memcpy使用陷阱
- Java WeakHashMap使用陷阱
- StringBuffer的使用陷阱
- ios 内存使用陷阱
- QWT的使用陷阱
- ios 内存使用陷阱
- ios 内存使用陷阱
- daemon 的使用陷阱
- ios 内存使用陷阱
- ios 内存使用陷阱
- android color.xml 颜色
- yii2搭建完美后台并实现rbac权限控制案例(1)
- HashMap深度解析(一)
- Android 数据存储-内部存储和外部存储
- Huffman编码
- go 协程使用陷阱
- 3002
- window.location.href=document.URL解决window.location.reload()的缺陷
- 开始写博客喽
- ListView中Item失去焦点
- 【Vue】 -(4) 数据绑定语法
- 多线程中局部静态变量初始化的陷阱
- OD重载F2断点消失,无法保存的解决方案
- 深度解读微信提现收费背后的真实意图