码农知识堂 - 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/
  • 相关阅读:
    各个厂家的RTSP地址格式
    手把手教学:二阶魔方还原
    Maven多模块项目管理小结
    软件配置 | pip下载第三方库文件及配置pip源的不完全总结
    LeetCode Hot100 LRU缓存
    opencv 图像阈值
    PHP毕业设计源代码剧影评|剧评影评系统
    Java编译器优化逃逸分析详解
    在Vs-code/WebStorm中构建Vue项目
    LuatOS-SOC接口文档(air780E)-- fskv - kv数据库,掉电不丢数据
  • 原文地址:https://blog.csdn.net/xiaoquqi/article/details/125435723
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号