为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 中创建数组文字数组

在 Golang 中创建数组文字数组

Go
三国纷争 2021-11-15 16:15:44
如何使用切片文字在 Golang 中创建一个 int 数组数组?我试过了test := [][]int{[1,2,3],[1,2,3]}和type Test struct {   foo [][]int}bar := Test{foo: [[1,2,3], [1,2,3]]}
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

你几乎有正确的东西,但是你的内部数组的语法有点不对,需要花括号,比如;test := [][]int{[]int{1,2,3},[]int{1,2,3}}或者更简洁的版本;test := [][]int{{1,2,3},{1,2,3}}

该表达式称为“复合文字”,您可以在此处阅读有关它们的更多信息;https://golang.org/ref/spec#Composite_literals

但作为基本的经验法则,如果您有嵌套结构,则必须递归地使用语法。它非常冗长。


查看完整回答
反对 回复 2021-11-15
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

在其他一些语言(Perl、Python、JavaScript)中,[1,2,3]可能是数组字面量,但在 Go 中,复合字面量使用大括号,在这里,您必须指定外部切片的类型:


package main


import "fmt"


type T struct{ foo [][]int }


func main() {

    a := [][]int{{1, 2, 3}, {4, 5, 6}}

    b := T{foo: [][]int{{1, 2, 3}, {4, 5, 6}}}

    fmt.Println(a, b)

}

您可以在 Playground 上运行或玩。


Go 编译器非常棘手,可以弄清楚 an 的元素[][]int是[]int不是你对每个元素都这么说。不过,您必须写出外部类型的名称。


查看完整回答
反对 回复 2021-11-15
?
不负相思意

TA贡献1777条经验 获得超10个赞

切片文字写为[]type{<value 1>, <value 2>, ... }. 一片 int 将是[]int{1,2,3},一片 int 切片将是[][]int{[]int{1,2,3},[]int{4,5,6}}。


groups := [][]int{[]int{1,2,3},[]int{4,5,6}}


for _, group := range groups {

    sum := 0

    for _, num := range group {

        sum += num

    }

    fmt.Printf("The array %+v has a sum of %d\n", sub, sum)


查看完整回答
反对 回复 2021-11-15
  • 3 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信