Skip to content
Go back

Golang 程序设计语言基础-数据结构

Edit page

Golang 程序设计语言基础-数据结构

数组


// 数组

// 是存放元素的容器
// 必须指定存放元素的类型和长度

func main() {
	var a1 [3]bool

	fmt.Printf("a1:%T\n", a1)
	// a1:[3]bool
	// 长度是类型的一部分,长度不同的数组是无法比较和赋值的

	// 初始化
	fmt.Println(a1)
	// [false false false]
	// 默认用零值初始化,bool-false,int-0,float-0,string-""

	// 1. 一般的初始化方式
	a1 = [3]bool{true, true, true}

	// 2. 根据初始值推断长度
	a4 := [...]int{1, 2, 3, 4}
	fmt.Println(a4)
	// [1 2 3 4]

	// 3. 使用索引初始化
	a5 := [5]int{0: 1, 4: 2}
	fmt.Println(a5)
	// [1 0 0 0 2]

	// 数组的遍历
	citys := [5]string{"东莞", "广州", "深圳", "长春", "昆明"}

	// 1. 根据索引遍历
	for i := 0; i < len(citys); i++ {
		fmt.Println(citys[i])
	}
	// 东莞
	// 广州
	// 深圳
	// 长春
	// 昆明

	// 2. for range 遍历
	for i, v := range citys {
		fmt.Println(i, v)
	}
	// 0 东莞
	// 1 广州
	// 2 深圳
	// 3 长春
	// 4 昆明

	// 多维数组
	a11 := [3][4]int{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12},
	}

	fmt.Println(a11)
	// [[1 2 3 4] [5 6 7 8] [9 10 11 12]]

	// 数组是值类型
	b1 := [3]int{1, 2, 3}
	b2 := b1
	b2[0] = 3
	fmt.Println(b1)
	// [1 2 3]
	fmt.Println(b2)
	// [3 2 3]

	// 因为是值类型,所以再赋值之后相当于重新创建了一个对象
	// 对新创建的对象的操作,不会影响原来的对象
}

切片


Edit page
Share this post on:

Previous Post
Golang 程序设计语言基础-结构体
Next Post
Hyperledger Fabric 链码生命周期