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. @L_403_13@
    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. 优先调度

相关文章

程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息...
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简...
简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其...
接下来学习并发编程, 并发编程是go语言最有特色的地方, go对并发编程是原生支持. goroutine是go中最近本...
先普及一下, 什么是广度优先搜索 广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶...
第一天: 接口的定义和实现 第二天: 一. go语言是面向接口编程. 在学习继承的时候说过, go语言只有封装,...