Go array of basic language

This paper describes the Go language array (array) and its basic use.

Array (Array)

An array is a collection of elements of the same data type. In the Go language, it is determined that a statement from an array, you can modify the array members use, but can not change the array size. The basic syntax:

// 定义一个长度为3元素类型为int的数组a
var a [3]int 

Array definition:

var 数组变量名 [元素数量]T

For example: var a [5]intthe length of the array must be a constant, and the length of a portion of the array type. Once defined, the length can not be changed. [5]intAnd [10]intare of different types.

var a [3]int var b [4]int a = b //不可以这样做,因为此时a和b是不同的类型 

The array can be accessed by subscript, subscript from the 0start, the last element index is: len-1, access violation (subscript outside the legal range), the access violation is triggered, it will panic.

Array initialization

Initialize the array, there are many ways.

method one

You can use the initialization list to set the value of the array elements of the array initialization.

func main() { var testArray [3]int //数组会初始化为int类型的零值 var numArray = [3]int{1, 2} //使用指定的初始值完成初始化 var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化 fmt.Println(testArray) //[0 0 0] fmt.Println(numArray) //[1 2 0] fmt.Println(cityArray) //[北京 上海 深圳] } 

Method Two

According to the above method ensures consistent initial value every time the length of the array and provides, in general, we have the compiler can infer the length of the array according to the number of its own initial value, for example:

func main() { var testArray [3]int var numArray = [...]int{1, 2} var cityArray = [...]string{"北京", "上海", "深圳"} fmt.Println(testArray) //[0 0 0] fmt.Println(numArray) //[1 2] fmt.Printf("type of numArray:%T\n", numArray) //type of numArray:[2]int fmt.Println(cityArray) //[北京 上海 深圳] fmt.Printf("type of cityArray:%T\n", cityArray) //type of cityArray:[3]string } 

Method Three

We can also use the specified index value way to initialize the array, for example:

func main() { a := [...]int{1: 1, 3: 5} fmt.Println(a) // [0 1 0 5] fmt.Printf("type of a:%T\n", a) //type of a:[4]int } 

Iterate

A loop through the array has the following two methods:

func main() { var a = [...]string{"北京", "上海", "深圳"} // 方法1:for循环遍历 for i := 0; i < len(a); i++ { fmt.Println(a[i]) } // 方法2:for range遍历 for index, value := range a { fmt.Println(index, value) } } 

Multidimensional Arrays

Go language support multidimensional arrays, we are here to two-dimensional array, for example (which is nested array of arrays).

Defined two-dimensional array

func main() { a := [3][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]] fmt.Println(a[2][1]) //支持索引取值:重庆 } 

Traversing the two-dimensional array

func main() { a := [3][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } for _, v1 := range a { for _, v2 := range v1 { fmt.Printf("%s\t", v2) } fmt.Println() } } 

Output:

北京	上海	
广州	深圳	
成都	重庆	

Note: only the first layer of a multi-dimensional array can be used ...to allow the compiler to derive the length of the array. E.g:

//支持的写法
a := [...][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } //不支持多维数组的内层使用... b := [3][...]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } 

Array is a value type

An array is a value type, assignment and transfer of participants to replicate the entire array. Therefore, changing the value of copies, it does not change the value itself.

func modifyArray(x [3]int) { x[0] = 100 } func modifyArray2(x [3][2]int) { x[2][0] = 100 } func main() { a := [3]int{10, 20, 30} modifyArray(a) //在modify中修改的是a的副本x fmt.Println(a) //[10 20 30] b := [3][2]int{ {1, 1}, {1, 1}, {1, 1}, } modifyArray2(b) //在modify中修改的是b的副本x fmt.Println(b) //[[1 1] [1 1] [1 1]] } 

note:

  1. Array Support "==", "! =" Operator, because the memory is always initialized.
  2. [n]*TRepresents a pointer array, *[n]Tit represents an array pointer.

Guess you like

Origin www.cnblogs.com/zhaohaiyu/p/11348843.html