Go 数组定义中的逗号是什么意思?

Go 数组定义中的逗号是什么意思?,go,Go,为什么此变量声明中有逗号: // RinkebyBootnodes are the enode URLs of the P2P bootstrap nodes running on the // Rinkeby test network. var RinkebyBootnodes = []string{ "enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34

为什么此变量声明中有逗号:

// RinkebyBootnodes are the enode URLs of the P2P bootstrap nodes running on the
// Rinkeby test network.
var RinkebyBootnodes = []string{
    "enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303", // IE
    "enode://343149e4feefa15d882d9fe4ac7d88f885bd05ebb735e547f12e12080a9fa07c8014ca6fd7f373123488102fe5e34111f8509cf0b7de3f5b44339c9f25e87cb8@52.3.158.184:30303",  // INFURA
}
我说的是逗号,在这里:

30303",  // INFURA
它是字符串数组的最后一个字符,必须放到那里,否则会出现编译错误


在C语言中,大括号{}的末尾不能有逗号,但在go中必须有逗号。为什么?这个逗号是什么意思?

逗号是一个元素拆分器。元素可以按行写入,也可以按列写入:

{1, 2, 3}


{
 1,
 2,
 3,
 }
很明显,逗号在最后一个元素之后是不必要的。有些语言需要它们的缺席(如C),有些语言需要存在(如Go),有些语言允许这两种变体(如Python)。有时它会导致像旧的Internet Explorer中的JavaScript一样的错误

为什么地鼠决定保留这个逗号?Go的一个关键原则是视觉上的简单性和可读性。这样所有的字符串看起来都一样。用眼睛看比较容易。还假设您再添加一行-您必须编辑上一行。这会在diff中产生视觉噪音


同样的想法,你得到的想法逗号不应该在一行。因为它破坏了作为额外符号的可读性

例如:见相关问题:;而且,这是语言规范规定的。@icza:这与分号规则无关。它比它们早。如前所述(),它有助于维护和生成元素列表。“这是故意的,”彼得索说,但引用了你链接的那个博客的话,连戴夫·切尼也这么认为。向前看:“虽然可能是一种改变,但这意味着当提出一行改变时,实际上是一行改变。”