Create Array Of Array Literal In Golang


Answer :

You almost have the right thing however your syntax for the inner arrays is slightly off, needing curly braces like; test := [][]int{[]int{1,2,3},[]int{1,2,3}} or a slightly more concise version; test := [][]int{{1,2,3},{1,2,3}}



The expression is called a 'composite literal' and you can read more about them here; https://golang.org/ref/spec#Composite_literals



But as a basic rule of thumb, if you have nested structures, you have to use the syntax recursively. It's very verbose.



In some other langauges (Perl, Python, JavaScript), [1,2,3] might be an array literal, but in Go, composite literals use braces, and here, you have to specify the type of the outer slice:



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)
}


You can run or play with that on the Playground.



The Go compiler is just tricky enough to figure out that the elements of an [][]int are []int without you saying so on each element. You do have to write out the outer type's name, though.



Just replace the square brackets with curly braces. In Go, array literals are identified with curly braces.




test := [][]int{{1,2,3},{1,2,3}}



Comments

Popular posts from this blog

Converting A String To Int In Groovy

"Cannot Create Cache Directory /home//.composer/cache/repo/https---packagist.org/, Or Directory Is Not Writable. Proceeding Without Cache"

Android How Can I Convert A String To A Editable