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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go语言的数组

發(fā)布時(shí)間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go语言的数组 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 Go 語言里,數(shù)組是一個(gè)長(zhǎng)度固定的數(shù)據(jù)類型,用于存儲(chǔ)一段具有相同的類型的元素的連續(xù)塊。數(shù)組存儲(chǔ)的類型可以是內(nèi)置類型,如整型或者字符串,也可以是某種結(jié)構(gòu)類型。

1 數(shù)組特性

(1)內(nèi)存是連續(xù)分配,CPU能把正在使用的數(shù)據(jù)緩存更久。
(2)容易計(jì)算索引,可以快速迭代數(shù)組里的所有元素。
(3)數(shù)組的每個(gè)元素類型相同,可以提供每次訪問一個(gè)元素時(shí)需要在內(nèi)存中移動(dòng)的距離。
因此,可以以固定速度索引數(shù)組中的任意數(shù)據(jù),速度非常快

數(shù)組內(nèi)部實(shí)現(xiàn)如下圖:

2?數(shù)組的聲明和初始化

四種方法聲明和初始化數(shù)組:

方法一:var 聲明 var array [5]int // 聲明一個(gè)包含 5 個(gè)元素的整型數(shù)組注意:聲明變量時(shí),總會(huì)使用對(duì)應(yīng)類型的零值來對(duì)變量進(jìn)行初始化。方法二:字面量聲明 array := [5]int{10, 20, 30, 40, 50} // 用具體值初始化每個(gè)元素方法三:用...自動(dòng)計(jì)算聲明數(shù)組的長(zhǎng)度 array := [...]int{10, 20, 30, 40, 50} // 容量由初始化值的數(shù)量決定方法四:聲明并指定特定元素的值 array := [5]int{1: 10, 2: 20} // 用具體值初始化索引為 1 和 2 的元素  

注意: 符號(hào)“ := ” 只能在函數(shù)內(nèi)部使用,代表go自動(dòng)推測(cè)變量的類型。

3 數(shù)組的使用

package mainimport "fmt"func main() {var array = [...]int{1, 2, 3, 4, 5}// 修改元素array[2] = 10// 查詢?cè)豧mt.Println("訪問數(shù)組索引為2的元素", array[2]) // 訪問數(shù)組索引為2的元素 10//訪問指針數(shù)組array2 := [5]*int{0: new(int), 1: new(int)}fmt.Println("指針數(shù)組元素2", array2[2]) // 指針數(shù)組元素2 <nil>}  

?數(shù)組的使用記住以下幾點(diǎn):

(1)通過索引訪問,修改元素。

(2)指針數(shù)組的初始化。

(3)長(zhǎng)度和類型都相同的數(shù)組可以相互復(fù)制。(未演示)

4 多維數(shù)組

多維數(shù)組的聲明和初始化和一維數(shù)組類似。

// 聲明一個(gè)二維整型數(shù)組,兩個(gè)維度分別存儲(chǔ) 4 個(gè)元素和 2 個(gè)元素 var array [4][2]int// 使用數(shù)組字面量來聲明并初始化一個(gè)二維整型數(shù)組 array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}// 聲明并初始化外層數(shù)組中索引為 1 個(gè)和 3 的元素 array := [4][2]int{1: {20, 21}, 3: {40, 41}}// 聲明并初始化外層數(shù)組和內(nèi)層數(shù)組的單個(gè)元素 array := [4][2]int{1: {0: 20}, 3: {1: 41}}

多維數(shù)組的使用:

// 聲明一個(gè) 2×2 的二維整型數(shù)組 var array [2][2]int// 設(shè)置每個(gè)元素的整型值 array[0][0] = 10// 將 array1 的索引為 1 的維度復(fù)制到一個(gè)同類型的新數(shù)組里 var array3 [2]int = array1[1]// 將外層數(shù)組的索引為 1、內(nèi)層數(shù)組的索引為 0 的整型值復(fù)制到新的整型變量里 var value int = array1[1][0]

5 函數(shù)間傳遞數(shù)組

64位操作系統(tǒng)上,大數(shù)組用指針傳遞,只需要8字節(jié)的內(nèi)存空間。

// 分配一個(gè)需要 8 MB 的數(shù)組 var array [1e6]int// 將數(shù)組的地址傳遞給函數(shù) foo foo(&array)// 函數(shù) foo 接受一個(gè)指向 100 萬個(gè)整型值的數(shù)組的指針 func foo(array *[1e6]int) {// do something }

  

  

 

?

轉(zhuǎn)載于:https://www.cnblogs.com/zingp/p/8696739.html

總結(jié)

以上是生活随笔為你收集整理的Go语言的数组的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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