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

水果糖 · · 1371 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 

一、创建方式

主要分为:

    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, 2, 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, 2, 3, 4, 5}
	array_B := []int{4, 5, 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, 2, 3, 4, 5}
	array_two := []int{4, 5, 6}

	Println(copy(array_one, array_two))
	Println(array_one, array_two)

	/*
    输出结果:
	   3
	   [4 5 6 4 5] [4 5 6]
	*/

 

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


有疑问加站长微信联系(非本文作者)

本文来自:开源中国博客

感谢作者:水果糖

查看原文:(一)GoLang小记 —— 数组与数组切片

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1371 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传