go基础——数组array

package main

import "fmt"

/*
	数组:
	array数组属于值类型,存储的是数值本身,数据传递给其他变量时传递的是数据的副本。
	slice,map等属于引用类型,存储的是数据的内存地址。
*/
func main() {
	//数组创建和访问
	var arr1 [4]int //创建数组,定长
	arr1[0] = 1
	arr1[1] = 2
	arr1[2] = 3
	arr1[3] = 4
	fmt.Println(arr1[0], arr1[2])
	//长度和容量,array/map/slice/string通用
	fmt.Println(len(arr1)) //长度,容器中实际存储的数据量
	fmt.Println(cap(arr1)) //容量,容器中能够存储的最大数据量
	fmt.Println("==============")

	//数组的其他创建方式
	var arr2 = [5]int{1, 2, 3} //未定义的位置为0
	fmt.Println(arr2)

	var arr3 = [5]int{1: 1, 3: 2}
	fmt.Println(arr3)

	var arr4 = [5]string{"rose", "小王", "ruby"} //未定义的位置为空字符串
	fmt.Println(arr4)

	arr5 := [...]int{1, 2, 3}
	arr6 := [...]int{1: 4, 5: 3}
	fmt.Println(len(arr5), cap(arr5))
	fmt.Println(len(arr6), cap(arr6))

	fmt.Println("==============")

	//数组的遍历
	for i := 0; i < len(arr1); i++ {
		arr1[i] = arr1[i]*2 + 1
	}
	fmt.Println(arr1)

	for i, v := range arr1 {
		fmt.Printf("下标%d,数值%d\n", i, v)
	}

	fmt.Println("==============")

	//数组的排序(冒泡)
	arr := [5]int{15, 23, 8, 10, 7}
	for i := 1; i < len(arr); i++ {
		for j := 0; j < len(arr)-i; j++ {
			if arr[j] > arr[j+1] {
				arr[j], arr[j+1] = arr[j+1], arr[j]
			}
		}
	}
	fmt.Println(arr)
	fmt.Println("==============")

	//二维数组
	a := [2][3]int{{1, 2, 3}, {4, 5, 6}}
	fmt.Println(a[0][1]) //第一个一维数组中的第二个元素
	//遍历
	for i := 0; i < len(a); i++ {
		for j := 0; j < len(a[i]); j++ {
			fmt.Print(a[i][j], "\t")
		}
		fmt.Println() //换行
	}
	//range遍历
	for _, arr_v1 := range a {
		for _, val := range arr_v1 {
			fmt.Print(val, "\t")
		}
		fmt.Println()
	}
}

执行结果

1 3
4
4
==============
[1 2 3 0 0]
[0 1 0 2 0]
[rose 小王 ruby  ]
3 3
6 6
==============
[3 5 7 9]
下标0,数值3
下标1,数值5
下标2,数值7
下标3,数值9
==============
[7 8 10 15 23]
==============
2
1       2       3
4       5       6
1       2       3
4       5       6
上一篇:2021-10-23


下一篇:Python3多线程之间的执行顺序问题