设为首页 收藏本站
查看: 874|回复: 0

[经验分享] GoLang学习之Golang数组

[复制链接]

尚未签到

发表于 2018-9-20 10:30:25 | 显示全部楼层 |阅读模式
Go语言数组
  数组是Go语言编程中最常用的数据结构之一。顾名思义,数组就是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素( element),一个数组包含的元素个数被称为数组的长度。需要强调的一点是Go语言中数组的长度固定,无法扩容。

声明定义
  数组在定义初始化的时候,长度可以指定,也可以不指定让编译器自动推断。几种常见的数组定义初始化的方式如下:
  

var a [3]int   //3个int型的数组,初始值是3个0,数组“零值”状态  
arr:=[5]int{1,2,3,4,5}   //定义并初始化长度为5的数组
  
var array2 = [...]int{6, 7, 8} //不声明长度
  
q := [...] int {1,2,3} //不声明长度
  
r := [...] int {99:-1}  //长度为100的数组,只有最后一个是-1,其他都是0
  

  在声明var arr1 [5]int中每个元素是一个整形值,当声明数组时所有的元素都会被自动初始化为默认值 0。

数组元素访问
  Go语言中,可以使用数组下标来访问数组中的元素。数组下标从0开始,len(arr)-1则表示最后一个元素的下标。
  只有有效的索引可以被使用,当使用等于或者大于 len(arr)的索引时:如果编译器可以检测到,会给出索引超限的提示信息;如果检测不到的话编译会通过而运行时会 panic。
  比起C语言,Go语言可以直接调用打印函数打印出整个数组。下面我们定义一个二维数组,然后来打印出数组长度和整个数组:
  

package main  

  
import "fmt"
  

  
func main() {
  myArray := [3][4]int{{1,2,3,4},{1,2,3,4},{1,2,3,4}}
  

  //打印一维数组长度
  fmt.Println(len(myArray))
  //打印二维数组长度
  fmt.Println(len(myArray[1]))
  //打印整个二维数组
  fmt.Println(myArray)
  
}
  

for-range结构
  这是Go语言一种独有的结构,可以用来遍历访问数组的元素。
  

for ix, value := range array01 {  ...
  
}
  

  第一个返回值 ix 是数组的索引,第二个是在该索引位置的值;他们都是仅在 for 循环内部可见的局部变量。value 只是 array01 某个索引位置的值的一个拷贝,不能用来修改 array01 该索引位置的值。例如:
  

package main  
import "fmt"
  

  
func main() {
  var arr1 [5]int
  

  for i:=0; i < len(arr1); i++ {
  arr1 = i * 2
  }
  

  for i:=0; i < len(arr1); i++ {
  fmt.Printf("Array at index %d is %d\n", i, arr1)
  }
  

  当然,如果你在遍历数组元素的时候,如果想遗弃索引id,可以直接把索引id标为下划线_。一个求数组里面的平均值的例子如下:
  

package main  
import (
  "fmt"
  
)
  
func main() {
  sum := 0.0
  var avg float64
  xs := [6]float64{1, 2, 3, 4, 5, 6}
  switch len(xs) {
  case 0:
  avg = 0
  default:
  for _, v := range xs {//下划线表示那个值舍去,即舍去下标索引
  sum += v
  }
  avg = sum / float64(len(xs))
  }
  fmt.Println(avg)
  
}
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598738-1-1.html 上篇帖子: Golang数组的四种声明方法 下篇帖子: golang 的time包之time
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表