Golang 逗号 methods/functions
Golang commas with methods/functions
为什么我们允许在方法声明、参数列表或 return 列表中的接收者末尾放置一个逗号。像这样:
func (ds *dasa,) yoooooolo (dsa dasa,) (dsaa dasa,)
为什么允许这样做?末尾都是逗号?
Golang 允许在多次声明后使用逗号。
这很可能是语言设计者的明确设计选择,更容许不相关的语法错误;然而,只有他们才能解释他们的动机。
func (f *Foo,) Bar(x, y int,) (int, error,) { //...
f.Bar(1, 2, 3,)
xs := []int{1, 2, 3,}
事实上,在一些多行文字声明中,需要 尾随逗号(可能是为了简化元素的重新排序):
ys := []int{
1,
2, // <-- required comma.
}
m := map[string]int{
"foo": 1,
"bar": 2, // <-- required comma.
}
请注意,go fmt
命令会自动删除无关的、可选的尾随逗号。在构建代码之前,您应该 始终 运行 该工具。
当你有一个有很多参数的函数时,你有时想像这样将函数头分布在多行中:
func foo(
int arg1,
string arg2,
[]byte arg3,
error arg4,
) {
/* implementation goes here */
}
尾随逗号允许以更正交的方式记下此参数列表。
为什么我们允许在方法声明、参数列表或 return 列表中的接收者末尾放置一个逗号。像这样:
func (ds *dasa,) yoooooolo (dsa dasa,) (dsaa dasa,)
为什么允许这样做?末尾都是逗号?
Golang 允许在多次声明后使用逗号。
这很可能是语言设计者的明确设计选择,更容许不相关的语法错误;然而,只有他们才能解释他们的动机。
func (f *Foo,) Bar(x, y int,) (int, error,) { //...
f.Bar(1, 2, 3,)
xs := []int{1, 2, 3,}
事实上,在一些多行文字声明中,需要 尾随逗号(可能是为了简化元素的重新排序):
ys := []int{
1,
2, // <-- required comma.
}
m := map[string]int{
"foo": 1,
"bar": 2, // <-- required comma.
}
请注意,go fmt
命令会自动删除无关的、可选的尾随逗号。在构建代码之前,您应该 始终 运行 该工具。
当你有一个有很多参数的函数时,你有时想像这样将函数头分布在多行中:
func foo(
int arg1,
string arg2,
[]byte arg3,
error arg4,
) {
/* implementation goes here */
}
尾随逗号允许以更正交的方式记下此参数列表。