多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
在之前的内容中,有时候使用`!!...!!`标记警告go语言中的一些错误使用方式。当你在编程时候遇到的一个困难,可以确定本书特定的章节能找到类似的主题。为了方便起见,这里列出了一些常见陷进,以便于你能发现更多的解释和例子: * 永远不要使用形如 `var p*a` 声明变量,这会混淆指针声明和乘法运算(参考[4.9小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/04.9.md)) * 永远不要在`for`循环自身中改变计数器变量(参考[5.4小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/05.4.md)) * 永远不要在`for-range`循环中使用一个值去改变自身的值(参考[5.4.4小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/05.4.md)) * 永远不要将`goto`和前置标签一起使用(参考[5.6小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/05.6.md)) * 永远不要忘记在函数名(参考[第6章](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.0.md))后加括号(),尤其调用一个对象的方法或者使用匿名函数启动一个协程时 * 永远不要使用`new()`一个map,一直使用make(参考[第8章](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/08.0.md)) * 当为一个类型定义一个String()方法时,不要使用`fmt.Print`或者类似的代码(参考[10.7小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/10.7.md)) * 永远不要忘记当终止缓存写入时,使用`Flush`函数(参考[12.2.3小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/12.2.md)) * 永远不要忽略错误提示,忽略错误会导致程序奔溃(参考[13.1小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/13.1.md)) * 不要使用全局变量或者共享内存,这会使并发执行的代码变得不安全(参考[14.1小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/14.1.md)) * `println`函数仅仅是用于调试的目的 最佳实践:对比以下使用方式: * 使用正确的方式初始化一个元素是切片的映射,例如`map[type]slice`(参考[8.1.3小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/08.1.md)) * 一直使用逗号,ok或者checked形式作为类型断言(参考[11.3小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/11.3.md)) * 使用一个工厂函数创建并初始化自己定义类型(参考[10.2小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/10.2.md)-[18.4小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/18.4.md)) * 仅当一个结构体的方法想改变结构体时,使用结构体指针作为方法的接受者,否则使用一个结构体值类型[10.6.3小节](https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/10.6.md) 本章主要汇总了go语言使用过程中最常见的错误和注意事项。在之前的章节已经涉及到了完整的示例和解释,你应该做的不仅仅是阅读这段的标题。