切片数组文字

问题描述 投票:0回答:1

我认为我发现Go编译器或语法(使用go1.12.5 windows / amd64)有问题。以下内容抱怨数组文字无法寻址:

    print([4]int{2,3}[:2])

我知道为什么从函数返回的数组是不可寻址的(例如Error addressing the returned slice of a function),但为什么像[4]int{2,3}这样的数组文字不能寻址?特别是当切片和字符串文字正确时-例如,它们可以很好地工作:

    print([]int{2,3,0,0}[:2])
    print("2300"[:2])

此外,由于&[4]int{42,43}是有效的表达式,所以数组常量确实是可寻址的。

我知道我可以用一片

    print([]int{2,3,0,0}[:2])

但是如果我希望容量(数组长度)为编译时常数,该怎么办。

    const maxLength = 4
    ...
    print([maxLength]int{2,3}[:2])

是的,我可以分配给一个临时数组变量,但是为什么需要这样做?

arrays go slice
1个回答
0
投票

使用以下内容:

fmt.Println((&[4]int{2, 3})[:2])
© www.soinside.com 2019 - 2024. All rights reserved.