什麼是數組
我的總結:一個變量,指向一塊的,具有長度的,並且是相同類型 #的一塊記憶體。
如何定義陣列
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: 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) }
注:可以得出结论,在第一层时,是可以实现长度自动推导的。
以上是一篇文章帶你了解Go語言基礎之數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

有效的Go應用錯誤日誌記錄需要平衡細節和性能。 1)使用標準log包簡單但缺乏上下文。 2)logrus提供結構化日誌和自定義字段。 3)zap結合性能和結構化日誌,但需要更多設置。完整的錯誤日誌系統應包括錯誤enrichment、日誌級別、集中式日誌、性能考慮和錯誤處理模式。

EmptyinterfacesinGoareinterfaceswithnomethods,representinganyvalue,andshouldbeusedwhenhandlingunknowndatatypes.1)Theyofferflexibilityforgenericdataprocessing,asseeninthefmtpackage.2)Usethemcautiouslyduetopotentiallossoftypesafetyandperformanceissues,

go'sconcurrencyModelisuniquedUetoItsuseofGoroutinesAndChannels,offeringAlightWeightandefficePappRockhiffcomparredTothread-likeLanguagesLikeLikeJjava,Python,andrust.1)

go'sconcurrencyModeluessgoroutinesandChannelStomanageConconCurrentPrommmengement.1)GoroutinesArightweightThreadThreadSthAtalLeadSthAtalAlaLeasyParalleAftasks,增強Performance.2)ChannelsfacilitatesfacilitatesafeDataTaAexafeDataTaAexchangeBetnegnegoroutinesGoroutinesGoroutinesGoroutinesGoroutines,crucialforsforsynchrroniz

Interfacesand -polymormormormormormingingoenhancecodereusanity和Maintainability.1)defineInterfaceSattherightabStractractionLevel.2)useInterInterFacesFordEffordExpentIndention.3)ProfileCodeTomeAgePerformancemacts。

initiTfunctioningOrunSautomation beforeTheMainFunctionToInitializePackages andSetUptheNvironment.it'susefulforsettingupglobalvariables,資源和performingOne-timesEtepaskSarpaskSacraskSacrastAscacrAssanyPackage.here'shere'shere'shere'shere'shodshowitworks:1)Itcanbebeusedinanananainapthecate,NotjustAckAckAptocakeo

接口組合在Go編程中通過將功能分解為小型、專注的接口來構建複雜抽象。 1)定義Reader、Writer和Closer接口。 2)通過組合這些接口創建如File和NetworkStream的複雜類型。 3)使用ProcessData函數展示如何處理這些組合接口。這種方法增強了代碼的靈活性、可測試性和可重用性,但需注意避免過度碎片化和組合複雜性。

initfunctionsingoareAutomationalCalledBeLedBeForeTheMainFunctionandAreuseFulforSetupButcomeWithChallenges.1)executiondorder:totiernitFunctionSrunIndIndefinitionorder,cancancapationSifsUsiseSiftheyDepplothother.2)測試:sterfunctionsmunctionsmunctionsMayInterfionsMayInterferfereWithTests,b


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。