Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Methods 带有方法/函数的Golang逗号_Methods_Go_Comma - Fatal编程技术网

Methods 带有方法/函数的Golang逗号

Methods 带有方法/函数的Golang逗号,methods,go,comma,Methods,Go,Comma,为什么我们可以在方法声明、参数列表或返回列表中的接收方末尾加逗号。像这样: func (ds *dasa,) yoooooolo (dsa dasa,) (dsaa dasa,) 为什么允许这样做?所有结尾的逗号?Golang允许在多次声明后使用尾随逗号 这可能是语言设计者明确的设计选择,允许出现不相关的语法错误;然而,只有他们能解释他们的动机 func (f *Foo,) Bar(x, y int,) (int, error,) { //... f.Bar(1, 2, 3,) xs :=

为什么我们可以在方法声明、参数列表或返回列表中的接收方末尾加逗号。像这样:

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,//当您有一个具有多个参数的函数时,有时会希望将函数头分散到多行上,如下所示:

func foo(
    int arg1,
    string arg2,
    []byte arg3,
    error arg4,
 ) {
    /* implementation goes here */
 }

尾随的逗号允许以更正交的方式写下此参数列表。

您总是运行
gofmt
对吗?那么这不是一个问题,因为无关的逗号被删除了。您是否查看了,看看它们在哪里允许这样做?在阅读规范时,我遇到了它。我的问题是为什么…?为什么我们可以这样做,我们的目的是什么如果你在提问之前做了适当的研究,那么我认为你应该在问题中加入相关链接,以(a)明确说明问题,以及(b)给感兴趣的人或试图回答问题的人一个开始的位置。后面的逗号可以更容易地重新排序,允许将括号移到下一行,更容易在不中断代码块括号的情况下添加注释到最后一个参数,对版本控制系统更友好,并且更容易编写代码生成器。显然,这不会使一行函数声明的ense。Golang有您必须遵守的样式规则(这就是gofmt存在的原因),所以我不确定为什么这主要是基于意见的。多行文字需要逗号来自分号插入规则:如果行不是以逗号结尾,分号将由lexer(?)插入。多行文字规则记录在哪里?
func foo(
    int arg1,
    string arg2,
    []byte arg3,
    error arg4,
 ) {
    /* implementation goes here */
 }