首页 文章详情

一篇文章带你了解Go语言基础之数组

Go语言进阶学习 | 303 2022-05-13 04:54 0 0 0
UniSMS (合一短信)
点击上方“Go语言进阶学习”,进行关注

回复“Go语言”即可获赠Python从入门到进阶共10本电子书

飞湍瀑流争喧豗,砯崖转石万壑雷。

    上篇文章中我们学习了Go语言基础中的变量,一篇文章带你了解Go语言基础之变量,这篇文章我们继续介绍Go语言基础知识,今天跟大家分享的是基础数据类型之数组,一起来学习下吧~


前言

Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之数组扒。


什么是数组

我的总结:一个变量,指向一块连续的,具有长度的,并且是相同类型的一块内存。


如何定义数组

var 变量名 [元素个数]元素类型

示例:

package main
func main() { //声明一个name_list数组,长度为100,里面只能放字符串 var name_list [100]string}

注:

var 变量名 [元素个数]元素类型 等同于 var 变量名 变量类型所以var name1 [3]int != var name2 [4]int因为变量类型是不一样,不可以直接进行赋值


数组初始化

package main
import "fmt"
func main() { //方式一,声明不赋值 //var name_list [10]int //fmt.Println(name_list) //结果:[0 0 0 0 0 0 0 0 0 0] 声明不赋值,int类型默认是0,其他类型也有默认值 // //方式二, 声明没有赋值完 //var name_list [10]int = [10]int{1, 3} //fmt.Println(name_list) //结果:[1 3 0 0 0 0 0 0 0 0],没有赋值完的,其他仍然是默认值
//方式三,声明完完全赋值 //var name_list = [3]int{1, 6, 10} //使用类型推断方式,同上 //fmt.Println(name_list) //结果:[1 6 10],每个都有值,没啥可说的
//方式四,自动推断个数 //var name_list = [...]int{1, 2, 4, 5, 19} //...表示自动推断个数,不会存在过多或者过少 //fmt.Println(name_list) //结果:[1 2 4 5 19]
//方式五,指定索引方式赋值,用的很少 var name_list = [...]int{1: 664: 11} //下标1赋值为66,下标4赋值11,其他默认值 fmt.Println(name_list) //结果:[0 66 0 0 11]}


数组遍历

package main
import "fmt"
func main() { var name_list = [...]string{"张三""李四""王五""小刘"} //方式一,普通for遍历 //for i := 0; i < len(name_list); i++ { //fmt.Println(name_list[i]) //}
//方式二,for range方式 for index, name := range name_list { //index是每个的下标,name是值 fmt.Println(index, name) }}


多维数组

二维数组

通常情况下,二维数组基本够用,最多三维数组,再套娃就完犊子了。

定义一个二维数组

package main
import "fmt"
func main() { //定义一个三行两列的一个数组 var student_list = [3][2]string{ // 列 列 {"张三""李四"}, //行 {"王五""小刘"}, //行 {"小七""王八"}, //行} fmt.Println(student_list)}

循环二维数组

同理,定义一个二维数组需要两层,循环也需要两层。

package main
import "fmt"
func main() { //定义一个三行两列的一个数组 var student_list = [3][2]string{ // 列 列 {"张三""李四"}, //行 {"王五""小刘"}, //行 {"小七""王八"}, //行} //方式一,普通for循环 //for i := 0; i < len(student_list); i++ { ////fmt.Println(student_list[i])//每行 ///* // [张三 李四] // [王五 小刘] // [小七 王八] //*/ //for j := 0; j < len(student_list[i]); j++ { // //每列 // fmt.Println(student_list[i][j]) //} //}
//方式二,for range for _, v := range student_list { //fmt.Println(v) //每行 /* [张三 李四] [王五 小刘] [小七 王八] */ for _, b := range v { //每列 fmt.Println(b) } }}

多维数组是否可以长度推导

代码

package main
import "fmt"
func main() { //定义一个三行两列的一个数组 var student_list = [...][...]string{ // 列 列 {"张三""李四"}, //行 {"王五""小刘"}, //行 {"小七""王八"}, //行} fmt.Println(student_list)}

报错

似乎是不可以的,那我只用第一层试试呢。

package main
import "fmt"
func main() { //定义一个三行两列的一个数组 var student_list = [...][2]string{ // 列 列 {"张三""李四"}, //行 {"王五""小刘"}, //行 {"小七""王八"}, //行 } fmt.Println(student_list)}

注:可以得出结论,在第一层时,是可以实现长度自动推导的。

总结

上述我们学习了Go基础之数组。如果在操作过程中有任务问题,记得下面讨论区留言,我们看到会第一时间解决问题。

我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。

------------------- End -------------------

欢迎大家点赞转发,转载,感谢大家的相伴与支持

想加入学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter