zoukankan      html  css  js  c++  java
  • golang笔记——array

    1、定义一个 array

      数组长度也是类型的一部分,比如长度为3的int数组与长度为5的int数组,并不是同一类型。

    package main
    
    import (
        "strconv" //GO语言中将 int 转化成 string 比较麻烦,通常使用 strconv.Itoa(i)
    )
    
    //格式化输出一个数组,因为不同长度的数组属于不同类型,这里只能用切片作为参数,调用时将数组转换成切片传入即可
    func print_array(arr []int) {
        var str string
        str = "["
        for k, v := range arr {
            if k == len(arr)-1 {
                str = str + strconv.Itoa(v)
            } else {
                str = str + strconv.Itoa(v) + ","
            }
        }
        str += "]"
        println(str)
    }
    
    func main() {
        //1、指明数组长度: 初始化的元素个数应该小于等于数组长度,否则会编译出错,如果初始化的元素长度小于数组个数,则未初始化部分系统会自动补为默认零值
        array1 := [3]int{} //相当于 [0,0,0]
        print_array(array1[:])
        array2 := [3]int{1, 2} //相当于 [1,2,0]
        print_array(array2[:])
        //arr := [3]int{1, 2, 3, 4} //初始化元素个数如果大于数组长度,则会编译出错
        array3 := [3]int{1: 2, 2: 3} //相当于[0,2,3] ,同 struct 一样,GO同样支持初始化时指定key,这里的key表示索引,未初始化的索引值为默认零值
        print_array(array3[:])
    
        //2、不指明数组长度: 数组的长度由初始化的元素决定
        array4 := [...]int{1, 2, 3} //相当于 [1,2,3]
        print_array(array4[:])
    
        array5 := [...]int{1: 2, 2: 3} //相当于 [0,2,3]
        print_array(array5[:])
    }

    2、数组操作

      通过数组名和数组下标即可进行访问和修改操作,通过 for .. range 可以进行遍历操作。因为数组的长度是固定的,也没有容量概念,所以概念和使用上都是比较简单的。

      for ... range 可以用于 arrayslicemap 的遍历,如果对 string 进行遍历,则默认得到的 value 值是对应字符的ASCII码,这一点需要注意。

        //以下会输出 97,98,99,100,
        s := "abcd"
        for _, v := range s {
            print(v, ",")
        }

    3、数组的特性

      GO语言中的数组是值类型,当赋值给另一个数组变量或作为方法参数传递时,都会复制数组的副本。

      注意,与C语言不同,数组的名字不代表数组的第一个元素的指针,这两种语言的数组存储结构不同,GO语言的数组存储结构是,首部存储数组长度,然后后面是实际数据。

      

  • 相关阅读:
    没有内存,怎么还能跑程序呢
    风物长宜放眼量,人间正道是沧桑
    一篇文章带你「重新认识」线程上下文切换怎么玩儿
    一文带你怼明白进程和线程通信原理
    万字长文带你还原进程和线程
    这些操作系统的概念,保你没听过!
    什么叫操作系统啊 | 战术后仰
    你要问我应用层?我就和你扯扯扯
    面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
    从这道字符串处理的难题,寻找解决复杂问题的套路
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/5239281.html
Copyright © 2011-2022 走看看