zoukankan      html  css  js  c++  java
  • GoLang学习之Golang数组

    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] = i * 2
        }
    
        for i:=0; i < len(arr1); i++ {
            fmt.Printf("Array at index %d is %d
    ", i, arr1[i])
        }
    

    当然,如果你在遍历数组元素的时候,如果想遗弃索引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)
    }
    
  • 相关阅读:
    职工工资管理系统 c++课程设计
    我的Python自学之路四,字符串的学习
    我的Python自学之路三:元组及字典学习总结
    我的Python自学之路二:列表学习
    我的Python自学之路一:Python学习路线
    vue项目里在微信浏览器调用微信分享及支付一些页面数据的坑
    vue 三种传值方法
    vue里swiper的一些坑
    js 数据导出为txt文件
    js 小数计算为啥和想象中不一样!
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8885962.html
Copyright © 2011-2022 走看看