据我所知,“ …”表示下面代码段中数组的长度。
var days := [...]string { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }
另一方面y
,正如我猜想的那样,“ …”表示将以下代码段中的切片拆分为int的参数。我对此不太确定。
x := []int{1,2,3}
y := []int{4,5,6}
x = append(x, y...)
现在,两种含义的差异使我很难理解“ …”是什么。
您已经注意到...
Go中的两种情况。实际上,有3个:
[...]int{1,2,3}
在编译时 评估为[3] int {1,2,3}
a := make([]int, 500)
SomeVariadicFunc(a...)
解压缩a
作为函数的参数。这与您错过的一个(可变参数的定义)相匹配:
func SomeVariadicFunc(a ...int)
现在是另一个问题(摘自OP的评论)- 为什么…在所有这些情况下都可以在语义上起作用?
答案是在英语(和其他语言)中,这被称为省略号。从那篇文章
省略号(复数椭圆;来自古希腊语:ἔλλειψις,élleipsis,“省略”或“落空”)是一系列点,通常表示故意从文本中省略了单词,句子或整个部分,而没有改变其原文含义。1
根据其上下文和在句子中的位置,省略号也可能表示未完成的思想,领先的陈述,稍稍的停顿以及紧张或尴尬的沉默。
在数组的情况下,这与“省略单词,句子或整个部分”的定义匹配。您将省略数组的大小,而让编译器为您解决。
在可变参数情况下,它使用相同的含义,但使用不同的含义。它还暗示着“未完成的思想”。我们经常用“
…”来表示“等等”。“我要买面包,鸡蛋,牛奶…”在这种情况下,“
…”表示“其他与面包,鸡蛋和牛奶相似的东西”。在中的使用append
表示“此列表的一个元素,以及所有其他元素”。这也许不是那么直接的直观用法,但是对于母语为母语的人来说,这是有道理的。也许已经a[0]...
或什至会出现“语言纯净”的构造,a[0], a[1], a[2]...
但这会导致空片(与...
语法一起使用)带来明显的问题,更不用说冗长了。
通常,“ …”用于表示“许多事物”,因此这两种用法都有意义。许多数组元素,许多切片元素(尽管一个是创建,而另一个是调用)。
我想隐藏的问题是“这是好的语言设计吗?”
一方面,一旦您了解了语法,对于大多数以英语为母语的人来说,它就非常有意义,因此在某种意义上说它是成功的。另一方面,以这种方式不重载符号也很有价值。我可能会选择其他符号来进行数组拆包,但我不能因为使用了语言设计人员可能直观的符号而对它们提出了质疑。特别是因为阵列版本甚至不经常使用。
如前所述,这对于编译器没有问题,因为情况永远不会重叠。您永远[...]
也不会表示“解压缩”,因此没有符号冲突。
(此外:Go中还有另一种用法,我省略了,因为它不是语言本身,而是构建工具。键入类似的内容go test ./...
表示“测试此程序包,以及该程序包的所有子目录中的所有程序包。”但是应该我对其他用途的解释非常清楚,为什么在这里有意义。)
我的XSLT1.0模板中有两个变量,每个变量包含一个节点集(用xpath选择)。我想确定一个变量中的节点集是否包含在另一个变量中的节点集中。例如,假设我有一个包含嵌套部分的章节。我想看看是否包含在中: 我试图获取节点集的交集,以查看是否是和共享的第一个公共元素,但这不起作用: 添加一些上下文。我正在用这个xslt为html页面树创建一个选项卡式界面,我试图解决的问题是将class=“current
当我安装Magento 2在我的服务器上,我得到了一个错误。经过对代码的调查,发现有三个点(),这是产生错误的。我包含了我在下面找到的代码:
问题内容: 我看到人们正在使用另一个列表来查看列表中是否存在某项,但是有一种快速的方法吗?: 问题答案: 您可以使用以下语法: 同样,逆运算符: 它适用于列表,元组,集合和字典(检查键)。 请注意 ,这是列表和元组中的O(n)操作,而集合和字典中是O(1)操作。
我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达
问题内容: MSDN文档指出: COUNT(*)返回组中的项目数。这包括NULL值和重复项。 您如何在一个组中有一个空值?谁能解释他们要提出的观点? 问题答案: 如果你有这张桌子 表格1: 然后 输出为:
表的结构是: null 以下是我目前掌握的信息: