go语言之数组

Posted bainianminguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言之数组相关的知识,希望对你有一定的参考价值。

1、go语言的数组和python的列表不一样,python的列表没有限定类型,而go的数组限定的类型,理由是这样的,请看下面的图

技术图片

2、go语言的数组

package main

import "fmt"

//go语言的数组类似python中的列表

//申明数组
//var 数组名[数组长度] 数组类型


//数组的长度定好之后不能修改


//go语言的数组定义了类型,就只能存储这种类型,不能存储其他类型
func main() {
	//首先定义一个一维数组

	//定义一个int类型的数组

	var arr1 [5] int


	//申明加赋值数组
	arr2 := [5]int{1,2,3,4,5}

	//可以省略大小
	arr3 := [...]int{1,2,3,4,5}


	arr4 := [10]int{1,2,3,4,5}

	fmt.Println(arr1,arr2,arr3,arr4)

	//[0 0 0 0 0] [1 2 3 4 5] [1 2 3 4 5] [1 2 3 4 5 0 0 0 0 0]




	//定义一个二维数组,四行五列的数组,一般也用的比较少

	var grid [4][5] int
	fmt.Println(grid)
	//[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]


	//数据的遍历,一个for一个range
	//方式1
	for i :=0;i < len(arr3);i++{
		fmt.Println(i,arr3[i])
	}


	//方式2
	for i := range arr3 {
		fmt.Println(i,arr3[i])
	}

	for i,v := range arr3 {
		fmt.Println(i,v)
	}



}

  

3、go语言的数组是值类型,不是引用

package main

import "fmt"

func printArr(arr [5]int)  {
	arr[0] = 100

	fmt.Println(arr)

}

func main() {
	//var arr1 [5] int

	//printArr(arr1)
	//[100 0 0 0 0]
	//fmt.Println(arr1)
	//[0 0 0 0 0]


	//报错
	//arr2 := [3]int{1,2,3}
	//printArr(arr2)
//	.\\test20.go:23:10: cannot use arr2 (type [3]int) as type [5]int in argument to printAr

	arr3 := [...]int{1,2,3,4,5}

	printArr(arr3)
	//[100 2 3 4 5]

	fmt.Println(arr3)
	//[1 2 3 4 5]
}

  

 

以上是关于go语言之数组的主要内容,如果未能解决你的问题,请参考以下文章

Go语言技巧之正确高效使用slice(听课笔记总结--简单易懂)

go语言之数组

Go语言切片

Go语言系列之数组和切片

7Go语言基础之切片(slice)

Go 语言泛型编程之切片