在Go中的换行符 – 理解Go Tour中的这个例子

huangapple go评论81阅读模式
英文:

Line Breaks in Go - Understanding this example from Go Tour

问题

我正在尝试理解Go Tour中的这个示例。第3行最后的逗号有什么意义?

fmt.Println(
	pow(3, 2, 10),
	pow(3, 3, 20),
)

换行符通常如何修改Go代码?我知道,如果没有换行符,我可以将这个语句写成

fmt.Println( pow(3, 2, 10), pow(3, 3, 20) )

它也可以编译通过。那么,为什么在换行符后需要额外的逗号呢?

英文:

I am trying to understand this example from the Go Tour.
What is the significance of this last comma on line 3

fmt.Println(
	pow(3, 2, 10),
	pow(3, 3, 20),
)

How do line breaks generally modify the code in go.
I know, that without the line breaks, I can write this statement as

fmt.Println( pow(3, 2, 10), pow(3, 3, 20) )

and it would compile.
So, why is the extra comma needed with line breaks

答案1

得分: 2

Go语言会自动在语句的末尾添加分号;

所以

fmt.Println(
	pow(3, 2, 10),
	pow(3, 3, 20),
)

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20),
);

是一样的。

但是

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20)
)

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20);
)

是不同的,后者显然是语法错误。

英文:

Go "automatically" adds ; as the end of a statement.

So

fmt.Println(
	pow(3, 2, 10),
	pow(3, 3, 20),
)

as the same as

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20),
);

But

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20)
)

is the same as

fmt.Println(
    pow(3, 2, 10),
    pow(3, 3, 20);
);

which is obvioulsy a syntax error.

答案2

得分: 0

没有特殊意义。在函数调用中允许使用尾随逗号,尽管 go fmt 会将其删除。

英文:

There's no significance. Trailing commas are allowed in function calls, although go fmt will remove them.

huangapple
  • 本文由 发表于 2017年3月18日 04:27:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/42866569.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定