golang中的数组

1. 数组的声明

package main

import "fmt"

func main() {
	// 数组:定长且元素类型一致的数据集合
	// 方式一:先声明在赋值,声明时内存中已经开辟了空间
	var nums [3]int // 内存中已开辟空间,初始化的值是0
	nums[0] = 999
	nums[1] = 666
	nums[2] = 333
	fmt.Println(&nums, nums)
	fmt.Printf("%p\n", &nums)

	// 方式二:声明+赋值
	names := [2]string{"ma", "ya"}
	fmt.Println(names)

	// 方式三:声明+赋值+指定位置
	var ages = [3]int{1: 22, 0: 87, 2: 99}
	fmt.Println(ages)

	// 方式四:省略个数
	str1 := [...]string{0: "hahah", 2: "hehad"}
	fmt.Println(str1)

	// 声明指针类型的数组(指针类型),不会开辟内存初始化数组中的值,numbers=nil
	var numbers *[3]int

	// 声明数组并初始化,返回的是指针类型的数组(指针类型)
	numbers2 := new([3]int)

	fmt.Println(numbers, numbers2)

}

  2. 数组内存管理

 

package main

import "fmt"

func main() {
	nums := [3]int32{11, 22, 33}
	fmt.Printf("数组的内存地址:%p\n", &nums)
	fmt.Printf("数组的第一个元素的内存地址:%p\n", &nums[0])
	fmt.Printf("数组的第一个元素的内存地址:%p\n", &nums[1])
	fmt.Printf("数组的第一个元素的内存地址:%p\n", &nums[2])

	names := [2]string{"沛齐", "alex"}
	fmt.Printf("字符串数组的内存地址:%p\n", &names)
	fmt.Printf("字符串数组的内存地址:%p\n", &names[0])
	fmt.Printf("字符串数组的内存地址:%p\n", &names[1])
}

  

 3. 数组的可变和拷贝

package main

import "fmt"

func main() {
	// 数组的可变和拷贝
	// 可变,数组的元素可以被更改,长度和类型都不可以被修改
	names := [2]string{"武沛齐", "alex"}
	names[1] = "袁浩"
	fmt.Println(names)
	// 注意:字符串不可以被修改

	// 拷贝,变量赋值时重新拷贝一份
	name1 := [2]string{"武沛齐", "alex"}
	name2 := name1
	name1[1] = "袁浩"
	fmt.Println(name1, name2)
}

  

4. 数组的长度、索引、切片、循环

package main

import "fmt"

func main() {
	// 长度、索引、切片、循环
	name := [2]string{"武沛齐", "alex"}

	// 1. 长度
	fmt.Println(len(name))

	// 2. 索引
	fmt.Println(name[0])
	name[0] = "eric"
	fmt.Println(name)

	// 3. 切片
	nums := [3]int{11, 22, 33}
	data := nums[:2]  // 获取 0<=下标<2
	fmt.Println(data)

	// 4. 手动循环
	for i := 0; i < len(nums); i++ {
		fmt.Println(i, nums[i])
	}

	// 5. for range 循环
	for index, item := range nums {
		fmt.Println(index, item)
	}
	for index := range nums {
		fmt.Println(index)
	}
	for _, item := range nums {
		fmt.Println(item)
	}

}

  5. 数组的嵌套

package main

import "fmt"

func main() {
	// 数组嵌套
	var nestData [2][3]int
	nestData[0] = [3]int{11, 22, 33}
	nestData[1][1] = 88
	fmt.Println(nestData)

	nestData2 := [2][3]int{{11, 22, 33}, {4, 5, 6}}
	fmt.Println(nestData2)

}

  

posted @ 2021-10-06 17:18  专职  阅读(67)  评论(0编辑  收藏  举报