日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历

發(fā)布時間:2025/1/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引入

【1】練習引入:

package main import "fmt" func main(){//實現(xiàn)的功能:給出五個學生的成績,求出成績的總和,平均數(shù)://給出五個學生的成績:score1 := 95score2 := 91score3 := 39score4 := 60score5 := 21//求和:sum := score1 + score2 + score3 + score4 + score5 //平均數(shù):avg := sum / 5//輸出fmt.Printf("成績的總和為:%v,成績的平均數(shù)為:%v",sum,avg) }

缺點:
成績變量定義個數(shù)太多,成績管理費勁,維護費勁 —》 將成績找個地方存起來 —》 數(shù)組
—》存儲相同類型的數(shù)據(jù)

【2】數(shù)組解決練習:

package main import "fmt" func main(){//實現(xiàn)的功能:給出五個學生的成績,求出成績的總和,平均數(shù)://給出五個學生的成績:--->數(shù)組存儲://定義一個數(shù)組:var scores [5]int//將成績存入數(shù)組:scores[0] = 95scores[1] = 91scores[2] = 39scores[3] = 60scores[4] = 21//求和://定義一個變量專門接收成績的和:sum := 0for i := 0;i < len(scores);i++ {//i: 0,1,2,3,4 sum += scores[i]}//平均數(shù):avg := sum / len(scores)//輸出fmt.Printf("成績的總和為:%v,成績的平均數(shù)為:%v",sum,avg) }

總結(jié):
數(shù)組定義格式:
var 數(shù)組名 [數(shù)組大小]數(shù)據(jù)類型
例如:
var scores [5]int
賦值:

scores[0] = 95 scores[1] = 91 scores[2] = 39 scores[3] = 60 scores[4] = 21

內(nèi)存分析

【1】代碼:

package main import "fmt" func main(){//聲明數(shù)組:var arr [3]int16//獲取數(shù)組的長度:fmt.Println(len(arr))//打印數(shù)組:fmt.Println(arr)//[0 0 0]//證明arr中存儲的是地址值:fmt.Printf("arr的地址為:%p",&arr)//第一個空間的地址:fmt.Printf("arr的地址為:%p",&arr[0])//第二個空間的地址:fmt.Printf("arr的地址為:%p",&arr[1])//第三個空間的地址:fmt.Printf("arr的地址為:%p",&arr[2]) }

運行結(jié)果:

【2】內(nèi)存分析:

PS : 數(shù)組每個空間占用的字節(jié)數(shù)取決于數(shù)組類型

【3】賦值內(nèi)存:(數(shù)組是值類型,在棧中開辟內(nèi)存)

數(shù)組優(yōu)點:訪問/查詢/讀取 速度快

數(shù)組遍歷

【1】普通for循環(huán)
【2】鍵值循環(huán)
(鍵值循環(huán)) for range結(jié)構(gòu)是Go語言特有的一種的迭代結(jié)構(gòu),在許多情況下都非常有用,for range 可以遍歷數(shù)組、切片、字符串、map 及通道,for range 語法上類似于其它語言中的 foreach 語句,一般形式為:

for key, val := range coll {... }

注意:
(1)coll就是你要的數(shù)組
(2)每次遍歷得到的索引用key接收,每次遍歷得到的索引位置上的值用val
(3)key、value的名字隨便起名 k、v key、value
(4)key、value屬于在這個循環(huán)中的局部變量
(5)你想忽略某個值:用_就可以了:

代碼:

package main import "fmt" func main(){//實現(xiàn)的功能:給出五個學生的成績,求出成績的總和,平均數(shù)://給出五個學生的成績:--->數(shù)組存儲://定義一個數(shù)組:var scores [5]int//將成績存入數(shù)組:(循環(huán) + 終端輸入)for i := 0; i < len(scores);i++ {//i:數(shù)組的下標fmt.Printf("請錄入第個%d學生的成績",i + 1)fmt.Scanln(&scores[i])}//展示一下班級的每個學生的成績:(數(shù)組進行遍歷)//方式1:普通for循環(huán):for i := 0; i < len(scores);i++ {fmt.Printf("第%d個學生的成績?yōu)?#xff1a;%d\n",i+1,scores[i])}fmt.Println("-------------------------------")//方式2:for-range循環(huán)for key,value := range scores {fmt.Printf("第%d個學生的成績?yōu)?#xff1a;%d\n",key + 1,value)} }

運行結(jié)果:

數(shù)組的定義

package main import "fmt" func main(){//第一種:var arr1 [3]int = [3]int{3,6,9}fmt.Println(arr1)//第二種:var arr2 = [3]int{1,4,7}fmt.Println(arr2)//第三種:var arr3 = [...]int{4,5,6,7}fmt.Println(arr3)//第四種:var arr4 = [...]int{2:66,0:33,1:99,3:88}fmt.Println(arr4) }

數(shù)組的使用細節(jié)

【1】長度屬于類型的一部分 :

【2】Go中數(shù)組屬值類型,在默認情況下是值傳遞,因此會進行值拷貝。

【3】如想在其它函數(shù)中,去修改原來的數(shù)組,可以使用引用傳遞(指針方式)。

二維數(shù)組的定義

【1】二維數(shù)組的定義,并且有默認初始值:

【2】二維數(shù)組內(nèi)存:

【3】賦值操作:

【4】二維數(shù)組的初始化:

二維數(shù)組的遍歷

【1】普通for循環(huán)
【2】鍵值循環(huán)(for range)

代碼:

package main import "fmt" func main(){//定義二維數(shù)組:var arr [3][3]int = [3][3]int{{1,4,7},{2,5,8},{3,6,9}}fmt.Println(arr)fmt.Println("------------------------")//方式1:普通for循環(huán):for i := 0;i < len(arr);i++{for j := 0;j < len(arr[i]);j++ {fmt.Print(arr[i][j],"\t")}fmt.Println()}fmt.Println("------------------------")//方式2:for range循環(huán):for key,value := range arr {for k,v := range value {fmt.Printf("arr[%v][%v]=%v\t",key,k,v)}fmt.Println()} }

總結(jié)

以上是生活随笔為你收集整理的go数组详解:数组的定义、遍历、使用细节、二维数组的定义及其遍历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。