Go语言自学系列 | golang数组

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客


数组是相同数据类型的一组数据的集合,数组一旦定义长度不能修改,数组可以通过下标(或者叫索引)来访问元素。

go语言数组的定义

数组定义的语法如下:

var variable_name [SIZE] variable_type

variable_name:数组名称

SIZE:数组长度,必须是常量

variable_type:数组保存元素的类型

实例

package main

import "fmt"

func main() {
    var a [3]int    // 定义一个int类型的数组a,长度是3
    var s [2]string // 定义一个字符串类型的数组s,长度是2

    fmt.Printf("a: %T\n", a)
    fmt.Printf("s: %T\n", s)
}

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
a: [3]int
s: [2]string

从上面运行结果,我们可以看出,数组和长度和元素类型共同组成了数组的类型。

go语言数组的初始化

初始化,就是给数组的元素赋值,没有初始化的数组,默认元素值都是零值,布尔类型是false,字符串是空字符串。

没有初始化的数组

实例

package main

import "fmt"

func main() {
    var a [3]int    // 定义一个int类型的数组a,长度是3
    var s [2]string // 定义一个字符串类型的数组s,长度是2
    var b [2]bool

    fmt.Printf("a: %v\n", a)
    fmt.Printf("s: %v\n", s)
    fmt.Printf("b: %v\n", b)
}

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
a: [0 0 0]
s: [ ]
b: [false false]

使用初始化列表

实例

package main

import "fmt"

func main() {
    var a = [3]int{1, 2, 3}
    var s = [2]string{"tom", "kite"}
    var b = [2]bool{true, false}

    a1 := [2]int{1, 2} // 类型推断

    fmt.Printf("a: %v\n", a)
    fmt.Printf("s: %v\n", s)
    fmt.Printf("b: %v\n", b)
    fmt.Printf("a1: %v\n", a1)
}

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
a: [1 2 3]
s: [tom kite]
b: [true false]
a1: [1 2]

使用初始化列表,就是将值写在大括号里面。

省略数组长度

数组长度可以省略,使用...代替,更加初始化值得数量自动推断,例如:

package main

import "fmt"

func main() {
    var a = [...]int{1, 2, 3}
    var s = [...]string{"tom", "kite"}
    var b = [...]bool{true, false}

    a1 := [...]int{1, 2} // 类型推断

    fmt.Printf("a: %v\n", a)
    fmt.Printf("s: %v\n", s)
    fmt.Printf("b: %v\n", b)
    fmt.Printf("a1: %v\n", a1)
}

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
a: [1 2 3]
s: [tom kite]
b: [true false]
a1: [1 2]

指定索引值的方式来初始化

可以通过指定索引的方式来初始化,未指定索引的默认为零值。

实例

package main

import "fmt"

func main() {
    var a = [...]int{0: 1, 2: 2}
    var s = [...]string{1: "tom", 2: "kite"}
    var b = [...]bool{2: true, 5: false}

    a1 := [...]int{1, 2} // 类型推断

    fmt.Printf("a: %v\n", a)
    fmt.Printf("s: %v\n", s)
    fmt.Printf("b: %v\n", b)
    fmt.Printf("a1: %v\n", a1)
}

运行结果

[Running] go run "/Users/guoliang/SynologyDrive/软件开发/go/golang入门到项目实战/goproject/360duote.com/pro01/test.go"
a: [1 0 2]
s: [ tom kite]
b: [false false true false false false]
a1: [1 2]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值