代码格式约定的Go模型是" gofmt
是约定"。该惯例中有一部分我很难理解,如果有一个gofmt
是一个实现的正式定义,而不是必须从经验实例中推导出该模型,那将是很好的。这是一个样本。
在go fmt
之前:
func sieve(mine int, // This instance's own prime
inch chan int, // Input channel from lower primes
done chan int, // Channel for signalling shutdown
count int) { // Number of primes - counter
start := true // First-number switch
ouch := make(chan int) // Output channel, this instance
fmt.Printf("%v ", mine) // Print this instance's prime
go fmt
之后:
func sieve(mine int, // This instance's own prime
inch chan int, // Input channel from lower primes
done chan int, // Channel for signalling shutdown
count int) { // Number of primes - counter
start := true // First-number switch
ouch := make(chan int) // Output channel, this instance
fmt.Printf("%v ", mine) // Print this instance's prime
有谁能帮我理解这里发生了什么?也就是说,为什么有些评论被不利地压缩,而其他评论则扩大了?一些理论:
gofmt
答案 0 :(得分:6)
传统上,函数/方法文档中描述了参数。考虑math/big.(*Int).Exp
docs:
// Exp sets z = x**y mod |m| (i.e. the sign of m is ignored), and returns z.
// If y <= 0, the result is 1 mod |m|; if m == nil or m == 0, z = x**y.
// See Knuth, volume 2, section 4.6.3.
func (z *Int) Exp(x, y, m *Int) *Int {
主要评论解释了x
,y
和m
是什么以及它们之间的关系。 This是godoc的外观呈现方式。
代码相同,每行通常都有自己的注释行:
// First-number switch.
start := true
// Output channel, this instance.
ouch := make(chan int)
// Print this instance's prime.
fmt.Printf("%v ", mine)