域名

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

时间:2010-12-5 17:23:32  作者:数据库   来源:IT科技  查看:  评论:0
内容摘要:前言Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之数组扒。什么是数组我的总结:一个变量,指向一块连续的,具有长度的,并且是相同类型的一块内存。 如何定义数组var变量名[元素个

 前言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],云南idc服务商每个都有值,没啥可说的     //方式四,自动推断个数     //var name_list = [...]int{ 1, 2, 4, 5, 19} //...表示自动推断个数,不会存在过多或者过少     //fmt.Println(name_list)                   //结果:[1 2 4 5 19]     //方式五,指定索引方式赋值,用的很少     var name_list = [...]int{ 1: 66, 4: 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) } 

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

copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap