zoukankan      html  css  js  c++  java
  • Go语言学习(五) 数组

    前几天一直在忙,今天才有时间继续学习Go语言。

    我也不知道会坚持多久,会学到什么地步,不过我会坚持,尽可能地坚持学下去...

    回到正题,数组是Go语言中的一个重要的类型,由[n]<type> 定义,n 标示array 的长度,而<type> 标示希望存储的内容的类型。

    申明一个数组:

    var arr1 [10]int

    Go语言中的数组一般有固定的大小,大小是类型的一部分。由于不同的大小是不同的类型,因此不能改变大小。

    数组同样是值类型的:将一个数组赋值给另一个数组,会复制所有的元素。

    尤其是当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

    代码为证:

     1 package main
     2 
     3 import "fmt"
     4 
     5 func modify(array [5]int) {
     6     array[0] = 10
     7     fmt.Println("In modify(), array values:", array) //[10 2 3 4 5]
     8 }
     9 
    10 func main() {
    11     array := [5]int{1, 2, 3, 4, 5}
    12     modify(array)
    13     fmt.Println("In main(), array values:", array) //[1 2 3 4 5]
    14 }

    输出结果为:

    In modify(), array values: [10 2 3 4 5]
    In main(), array values: [1 2 3 4 5]

    正好印证了上面说的:当向函数内传递一个数组的时候,它会获得一个数组的副本,而不是数组的指针。

    关于数组的申明方式已经二维数组的使用见如下实例:

    package main
    
    import "fmt"
    
    func main() {
    
        //申明一个长度为10的int数组
        var arr1 [10]int
        arr1[0] = 42
        arr1[1] = 13
        fmt.Printf("The element is %d\n", arr1[0]) //42
        fmt.Printf("The element is %d\n", arr1[9]) //默认值0来初始化
        fmt.Println(arr1)
    
        //申明一个长度为3,值分别为1,2,3的数组
        arr2 := [3]int{1, 2, 3}
        fmt.Println(arr2)
    
        //如下情况,Go会自动统计元素个数
        arr3 := [...]int{1, 2, 3}
        fmt.Println(arr3)
    
        //二维数组,如下3中方式都可以
        //a := [2][2]int{ [2]int{1,2}, [2]int{3,4} }
        //a := [2][2]int{ [...]int{1,2}, [...]int{3,4} }
        a := [2][2]int{{1, 2}, {3, 4}}
        fmt.Println(a)
        fmt.Printf("%d\n", a[0][0]) //1
        fmt.Printf("%d\n", a[0][1]) //2
        fmt.Printf("%d\n", a[1][0]) //3
        fmt.Printf("%d\n", a[1][1]) //4
    }

    数组就到这里了,明天继续slices~~

  • 相关阅读:
    JS解析XML文件和XML字符串
    查询优化的方法
    Oracle 常用操作
    取得同一网段内的IP和MAC地址!
    域名知多少?
    Oracle 数据库链路 同义词
    提高查询速度的方法【百万级以上数据】
    ExtJs学习之路从Grid中得到数据
    一个左边停靠且可以展开和隐藏的菜单【Jquery插件】
    Go流程控制
  • 原文地址:https://www.cnblogs.com/yejg1212/p/2981651.html
Copyright © 2011-2022 走看看