前端之家收集整理的这篇文章主要介绍了
(一)GoLang小记 —— 数组与数组切片,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一、创建方式
@H_
502_8@主要分为:
@H_
502_8@ 1、完整创建;
@H_
502_8@ 2、切片创建;
//创建数组(声明长度)
var array1 = [5]int{1,2,3}
fmt.Printf("array1--- type:%T \n",array1)
rangeIntPrint(array1[:])
//创建数组(不声明长度)
var array2 = [...]int{6,7,8}
fmt.Printf("array2--- type:%T \n",array2)
rangeIntPrint(array2[:])
//创建数组切片
var array3 = []int{9,10,11,12}
fmt.Printf("array3--- type:%T \n",array3)
rangeIntPrint(array3)
//创建数组(声明长度),并仅初始化其中的部分元素
var array4 = [5]string{3: "Chris",4: "Ron"}
fmt.Printf("array4--- type:%T \n",array4)
rangeObjPrint(array4[:])
//创建数组(不声明长度),并仅初始化其中的部分元素,数组的长度将根据初始化的元素确定
var array5 = [...]string{3: "Tom",2: "Alice"}
fmt.Printf("array5--- type:%T \n",array5)
rangeObjPrint(array5[:])
//创建数组切片,并仅初始化其中的部分元素,数组切片的len将根据初始化的元素确定
var array6 = []string{4: "Smith",2: "Alice"}
fmt.Printf("array6--- type:%T \n",array6)
rangeObjPrint(array6)
@H_
502_8@
二、数组遍历
@H_
502_8@数组遍历分为:
@H_
502_8@ 1、下标方式遍历
@H_
502_8@ 2、range形式遍历
array := []int{0,1,3,4}
//range遍历
for i := range array {
Printf("%d \n",i)
}
//下标遍历
for i := 0; i < len(array); i++ {
Printf("%d \n",array[i])
}
三、数组长度
//"推导型数组初始化默认以0填充"
array_one := [10]int{}
Println("数组内容为:",array_one)
Println("数组长度:",cap(array_one),"实际长度:",len(array_one))
//"推导型数组切片make初始化可以指定初始化方案"
array_two := make([]int,5,10)
Println("\n数组内容为:",array_two)
Println("数组长度:",cap(array_two),len(array_two))
四、数组复制
@H_
502_8@Copy(数组1,数组 2)
@H_
502_8@GoLang内置的Copy
方法会复制原理是:
@H_
502_8@ 1、将数组2与数组1的
内容对应下标
内容进行对比后复制;
@H_
502_8@ 2、进行复制的2个数组的长、短不一致不会产生异常;
@H_
502_8@ 3、复制不是替换,只会影响对应下标
内容;
array_A := []int{1,4,5}
array_B := []int{4,6}
Println(copy(array_B,array_A))
Println(array_A,array_B)
/*
输出结果:
3
[1 2 3 4 5] [1 2 3]
*/
array_one := []int{1,5}
array_two := []int{4,6}
Println(copy(array_one,array_two))
Println(array_one,array_two)
/*
输出结果:
3
[4 5 6 4 5] [4 5 6]
*/
@H_
502_8@注意:Copy
方法会返回一个
修改数量.....