Go语言数组与切片

数组

数组:是同一种数据类型的固定长度的序列。

数组定义:var a [len]int,比如:var a[5]int

长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型

数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1

for i := 0; i < len(a); i++ {
}

访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic

数组是值类型,因此改变副本的值,不会改变本身的值

arr2 := arr1
arr2[2] = 100

不能改变数组本身的值

package main

import (
	"fmt"
)

func modify(arr [5]int) {
	arr[0] = 100
	fmt.Println("arr",arr)
	return
}

func main() {
	var a [5]int

	modify(a)
	for i := 0; i < len(a); i++ {
		fmt.Println(a[i])
	}
}

  

使用指针改变数组的值

package main

import (
	"fmt"
)

func modify(arr *[5]int) {     //*[5]int   表示需要传入的值是地址
	(*arr)[0] = 100
	fmt.Println("arr",arr)
	return
}

func main() {
	var a [5]int

	modify(&a)
	for i := 0; i < len(a); i++ {
		fmt.Println(a[i])
	}
}

数组的初始化  

var age0 [5]int = [5]int{1,2,3}

var age1 = [5]int{1,2,3,4,5}

var age2 = […]int{1,2,3,4,5,6}

var str = [5]string{3:”hello world”, 4:”tom”}  #指定具体索引的值

 

多维数组 

var age [5][3]int   //定义一个五行三列的数组

var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}   //定义一个两行三列的数组并初始化

  

多维数组遍历

package main

import (
	"fmt"
)

func main() {

	var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}

	for k1, v1 := range f {
		for k2, v2 := range v1 {
			fmt.Printf("(%d,%d)=%d ", k1, k2, v2)
		}
		fmt.Println()
	}
}

  

切片

  

猜你喜欢

转载自www.cnblogs.com/weidaijie/p/11429540.html