码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 2.4 Go语言中的数组(Array)


    基本语法

    数组是各种语言必备的一种数据类型,Go语言也不例外,如下面的示例,定义的方法主要指明长度和类型。不同于Python中的List类型,可以随意存放各种类型的数据,Go语言中的数组一旦确定类型,只能存放本类型的数据。

    var array_name [length]Type
    array_name[index] = variable
    
    // 初始化值
    var array_name [length]Type{item1, item2, item3, ...itemN}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    数组声明示例

    var arr [10]int
    arr[0] = 42
    fmt.Printf("The first element is %d\n", arr[0])
    
    • 1
    • 2
    • 3

    数组初始化示例

    // 显示定义
    a := [3]int{1, 2, 3}
    
    // 自动计算数组长度
    a := [...]int{1, 2, 3}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    关于三个点(…)Ellipsis的说明

    我们经常在Go中看到这种方式,首先三个点的英文是Ellipsis,翻译成中文叫做“省略”,可能各位看到这个词就比较好理解三个点的作用了。在不同的位置上有不同的作用,比如在上述数组的定义中,省略了数组长度的声明,而是根据数组初始化值来决定。在函数定义中,我们还会看到类似的使用方法,我们再进行详细的说明。

    多维数组初始化示例

    a := [2][2]int{ {1, 2}, {3, 4} }
    
    • 1

    数组比较

    直接使用等号就可以对数组进行比较,见下面的例子

    package main
    
    import "fmt"
    
    func main() {
        // Arrays
        arr1:= [3]int{9,7,6}
        arr2:= [...]int{9,7,6}
        arr3:= [3]int{9,5,3}
    
        // Comparing arrays using == operator
        fmt.Println(arr1==arr2) // true
        fmt.Println(arr2==arr3) // false
        fmt.Println(arr1==arr3) // false
    
        // This will give and error because the
        // type of arr1 and arr4 is a mismatch
        //arr4:= [4]int{9,7,6}
        //fmt.Println(arr1==arr4)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    注意在注释区域,如果两个数组长度不一样,如果进行比较则会得到这样的错误

    ./test_array_compare.go:19:21: invalid operation: arr1 == arr4 (mismatched types [3]int and [4]int)
    
    • 1

    知识点

    • 如果将数组赋值给另外一个变量,会拷贝所有元素
    • 如果将array传给函数,也是拷贝元素,并非指向,这一点与Python不同
    • 为了控制篇幅,缩短大家的阅读时间,关于数组的遍历方法,我们会在控制结构中For进行讲解

    参考文档

    • https://www.geeksforgeeks.org/arrays-in-go/?ref=lbp
    • https://www.geeksforgeeks.org/how-to-use-ellipsis-in-golang/
    • http://liupzmin.com/2019/07/31/golang/golang-three-dots/
  • 相关阅读:
    一个简易的低代码
    rk版本编译系统
    报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法
    循环赛-(单循环)
    从0到1搭建一个vue项目
    MySQL 基础学习总结(一)
    基于JAVA奇妙店铺电子商务网站计算机毕业设计源码+数据库+lw文档+系统+部署
    【python小项目】用python写一个小工具——番茄钟
    sudo相关漏洞CVE-2019-18634、CVE-2019-14287
    linux安装Chrome跑web自动化
  • 原文地址:https://blog.csdn.net/xiaoquqi/article/details/125435723
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号