研究数组

孔特利亚诺 · · 2831 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

数组

数组的长度是类型的一部分

数组定义和初始化

var 数组变量名 [元素数量]T

vara[3]int//定义一个长度为3的整型数组aa[0]=80a[1]=90a[2]=10vararr[3]intvararr1[3]stringvararr2[3]int{1,3,4}arr3:=[3]string{"php","nodejs","golang"}fmt.Println(arr,arr2,arr2)//[0 0 0] [  ] [1 3 4]

注意:数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。5[int]和4[int]是不同的类型

vararr1[4]intvararr2[5]intfmt.Printf("arr1=%T arr2=%T",arr1,arr2)//arr1:[4]int arr2:[5]int

编译器根据初始值的个数自行推断数组长度

varnumArray=[...]int{1,2}varcityArray=[...]string{"php","nodejs","golang"}

指定索引值的方式来初始化数组

funcmain(){a:=[...]int{1:1,3:5}fmt.Pringln(len(arr))//4}

数组的循环遍历

for

vararr=[3]int{23,24,5}fori:=0;i<len(arr);i++{fmt.Println(arr[i])}

for range

vararr=[3]int{23,24,5}fork,v:=rangearr{//k对应下标,v对应值fmt.Println(v)}

值类型和引用类型

值类型

基本数据类型和数组都是值类型

vara=10b:=a a=20fmt.Println(a,b)//20 10vararr1=[...]int{1,2,3}arr:=arr1arr1[0]=11fmt.Println(arr1,arr2)//[11 2 3]  [1 2 3]

引用类型(切片)

vararr1=[...]int{1,2,3}arr2:=arr1arr1[0]=11fmt.Println(arr1,arr2)//[11 2 3] [11 2 3]

多维数组

Go语言是支持多维数组的,但通常使用时不会超过二维

var 数组变量名 [元素数量][元素数量]T

//创建一个三行两列的数组vararr=[3][2]string{{"北京","上海"},{"广州","深圳"},{"成都","重庆"}}for_,v1:=rangearr{for_,v2:=rangev1{fmt.Println(v2)}}fori:=0;i<len(arr);i++{forj:=0;j<len(arr[i]);j++{fmt.Println(arr[i][j])}}

多维数组只有在第一层可以使用...来让编译器推导数组长度

arr:=[...][2]string{{"北京","上海"},{"广州","深圳"},{"成都","重庆"}}

作者:learninginto

链接:https://www.jianshu.com/p/595240fb6b24

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


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

本文来自:简书

感谢作者:孔特利亚诺

查看原文:研究数组

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

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