微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一GoLang小记 —— 数组与数组切片

一、创建方式

主要分为:

1、完整创建;

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)

二、数组遍历

数组遍历分为:

1、下标方式遍历

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))

四、数组复制

copy(数组1,数组 2)

GoLang内置的copy方法会复制原理是:

1、将数组2与数组1的内容对应下标内容进行对比后复制;

2、进行复制的2个数组的长、短不一致不会产生异常;

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]
	*/

注意:copy方法会返回一个修改数量.....

原文地址:https://www.jb51.cc/go/189324.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐