原文链接:https://golang.org/doc/effective_go.html
Introduction
Go是一种新兴的编程语言。虽然它借鉴了现有语言的思想,但它具有不同寻常的特性,使得高效的Go程序与其他语言编写的程序大不相同。将C ++或Java程序直接转换为Go不太可能产生令人满意的结果 - Java程序是用Java编写的,而不是Go。另一方面,从Go语言的角度思考问题可能会产生一个成功但完全不同的程序。换句话说,要写好Go,了解它的特性和语法是很重要的。了解Go中编程的既定约定也很重要,例如命名,格式化,程序构造等,这样你编写的程序将很容易让其他Go程序员理解。
该文档提供了编写清晰,常用的Go代码的技巧。 Language specification,Tour of Go和How to Write Go Code,这些都应该先阅读。
Formatting(格式化)
格式化问题是最具争议性但最不重要的问题。人们可以适应不同的格式化风格,但如果不是勉强去适应代码风格,那就更好了,如果每个人都遵循相同的风格,那么关注在格式化上的时间就会减少。问题在于如何能够长期在没有规定风格的情况下达到这个理想的情况。
使用Go,我们采取了一种不寻常的方法,让机器处理大多数格式问题。gofmt程序(也可作为go fmt,在包级别而不是源文件级别运行)读取Go程序并以标准样式的缩进和垂直对齐方式格式化源代码,并在必要时重新格式化注释。如果你想知道如何处理一些新的布局情况,请运行gofmt;如果结果似乎不正确,重新整理你的程序(或提交有关gofmt的错误),不必纠结于此。
例如,没有必要花时间排列结构体中字段的注释。Gofmt会去做的。给出结构体的声明:
type T struct { name string // name of the object value int // its value }
gofmt会格式化为:
type T struct { name string // name of the object value int // its value }
标准包中的所有Go代码都已经使用gofmt格式化过了。一些格式细节仍然存在,非常简短:
- 缩进:我们使用tab进行缩进,gofmt默认使用的就是tab。仅在必要时使用空格。
- 每行的长度:Go中对每行的长度没有限制,别担心打孔卡不够长。如果一行实在太长,可以换行然后使用tab进行缩进。
- 括号:Go中的括号要比C和Java少,控制结构(if,for,switch)的语法中没有括号。此外,运算符优先级层次更短更清晰,因此在x<<8 + y<<16中间距说明了优先级,这与其他语言是不同的。
Commentary(注释)
Names(命名)
Semicolons(分号)
原文地址:https://www.cnblogs.com/Moon-Light-Dream/p/10241940.html