Go的50度灰:Golang新开发者要注意的陷阱和常见错误

转载:http://colobu.com/2015/09/07/gotchas-and-common-mistakes-in-go-golang/


目录 [−]

  1. 初级
    1. 开大括号不能放在单独的一行
    2. 未使用的变量
    3. 未使用的Imports
    4. 简式的变量声明仅可以在函数内部使用
    5. 使用简式声明重复声明变量
    6. 偶然的变量隐藏Accidental Variable Shadowing
    7. 不使用显式类型,无法使用“nil”来初始化变量
    8. 使用“nil” Slices and Maps
    9. Map的容量
    10. 字符串不会为nil
    11. Array函数的参数
    12. 在Slice和Array使用“range”语句时的出现的不希望得到的值
    13. Slices和Arrays是一维的
    14. 访问不存在的Map Keys
    15. Strings无法修改
    16. String和Byte Slice之间的转换
    17. String和索引操作
    18. 字符串不总是UTF8文本
    19. 字符串的长度
    20. 在多行的Slice、Array和Map语句中遗漏逗号
    21. log.Fatal和log.Panic不仅仅是Log
    22. 内建的数据结构操作不是同步的
    23. String在“range”语句中的迭代值
    24. 对Map使用“for range”语句迭代
    25. "switch"声明中的失效行为
    26. 自增和自减
    27. 按位NOT操作
    28. 操作优先级的差异
    29. 未导出的结构体不会被编码
    30. 有活动的Goroutines下的应用退出
    31. 向无缓存的Channel发送消息,只要目标接收者准备好就会立即返回
    32. 向已关闭的Channel发送会引起Panic
    33. 使用"nil" Channels
    34. 传值方法的接收者无法修改原有的值
  2. 中级
    1. 关闭HTTP的响应
    2. 关闭HTTP的连接
    3. 比较Structs, Arrays, Slices, and Maps
    4. 从Panic中恢复
    5. 在Slice, Array, and Map "range"语句中更新引用元素的值
    6. 在Slice中"隐藏"数据
    7. Slice的数据“毁坏”
    8. 陈旧的(Stale)Slices
    9. 类型声明和方法
    10. 从"for switch"和"for select"代码块中跳出
    11. "for"声明中的迭代变量和闭包
    12. Defer函数调用参数的求值
    13. 被Defer的函数调用执行
    14. 失败的类型断言
    15. 阻塞的Goroutine和资源泄露
  3. 高级
    1. 使用指针接收方法的值的实例
    2. 更新Map的值
    3. "nil" Interfaces和"nil" Interfaces的值
    4. 栈和堆变量
    5. GOMAXPROCS, 并发, 和并行
    6. 读写操作的重排顺序
    7. 优先调度

展开阅读全文

没有更多推荐了,返回首页