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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组

發布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 數組定義

數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的原始類型例如整形、字符串或者自定義類型。

2. 聲明數組

Go 語言數組聲明需要指定元素類型及元素個數,語法格式如下:

var varName [SIZE]varType

語法說明如下所示:

  • varName(數組變量名):數組聲明及使用時的變量名。
  • SIZE(元素數量):數組的元素數量,可以是一個表達式,但最終通過編譯期計算的結果必須是整型數值,元素數量不能含有到運行時才能確認大小的數值。
  • Type(數組類型):可以是任意基本類型,包括數組本身,類型為數組本身時,可以實現多維數組。

例如以下定義了數組 a 長度為 10, 類型為 float32:

var a [10]float32

3. 初始化數組

  1. 指定長度和初始化值,初始化數組中 {} 中的元素個數不能大于 [] 中的數字:
var a = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

默認情況下,數組的每個元素都會被初始化為元素類型對應的零值,對于數字類型來說就是 0,同時也可以使用數組字面值語法,用一組值來初始化數組:

var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0"
  1. 不指定數組長度, Go 語言會根據元素的個數來設置數組的大小:
var a = []float32{1000.0, 2.0, 3.4, 7.0, 50.0}
  1. 指定長度,通過索引值進行初始化,沒有初始化的元素使用類型默認值:
a := [3]int{1:1, 3:3}
  1. 不指定長度,通過索引值進行初始化,數組長度由最后一個索引值確定,沒有指定索引的元素被初始化為類型默認值:
a := []int{1:1, 2:3}

4. 訪問數組

數組的每個元素都可以通過索引下標來訪問,索引下標的范圍是從 0 開始到數組長度減 1 的位置,內置函數 len() 可以返回數組中元素的個數。

var a [3]int             // 定義三個整數的數組
fmt.Println(a[0])        // 打印第一個元素
fmt.Println(a[len(a)-1]) // 打印最后一個元素
var salary float32 = balance[9]

5. 數組相等

數組的長度是數組類型的一個組成部分,因此 [3]int[4]int 是兩種不同的數組類型,數組的長度必須是常量表達式,因為數組的長度需要在編譯階段確定。

q := [3]int{1, 2, 3}
q = [4]int{1, 2, 3, 4} // 編譯錯誤:無法將 [4]int 賦給 [3]int

如果兩個數組類型相同(包括數組的長度,數組中元素的類型)的情況下,我們可以直接通過較運算符(==!=)來判斷兩個數組是否相等,只有當兩個數組的所有元素都是相等的時候數組才是相等的,不能比較兩個類型不同的數組,否則程序將無法完成編譯。

a := [2]int{1, 2}
b := [...]int{1, 2}
c := [2]int{1, 3}
fmt.Println(a == b, a == c, b == c) // "true false false"
d := [3]int{1, 2}
fmt.Println(a == d) // 編譯錯誤:無法比較 [2]int == [3]int

6. 使用示例

package mainimport "fmt"func main() {// var n [5]int,聲明一個含有 5 個元素的數組,但元素默認都是 0, 一般很少這樣使用var n = []int{10, 20, 30, 40, 50}average_value := get_average(n)fmt.Printf("average_value is %v\n", average_value)for j := 0; j < len(a); j++ {	// len(a) 獲取數組長度fmt.Printf("origin array n[%v] is %v\n", j, n[j])}fmt.Printf("###############\n")for i := 0; i < 5; i++ {n[i] = i}for index, value := range n { // 遍歷數組fmt.Printf("new array n[%v] is %v\n", index, value)}}func get_average(array []int) int {array_length := len(array)var sum int = 0for i := 0; i < array_length; i++ {sum += array[i]}average := sum / array_lengthreturn average
}

7. 多維數組

Go 語言支持多維數組,以下為常用的多維數組聲明方式:

var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type

示例

var threedim [5][10][4]int

二維數組是最簡單的多維數組,二維數組本質上是由一維數組組成的。二維數組定義方式如下:

var arrayName [x][y]variableType

arrayName 為數組名,variableType為 Go 語言的數據類型。二維數組中的元素可通過 a[i][j] 來訪問。

7.1 初始化二維數組

// 使用數組字面量來聲明并初始化一個二維整型數組
array = [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}
// 聲明并初始化數組中索引為 1 和 3 的元素
array = [4][2]int{1: {20, 21}, 3: {40, 41}}
// 聲明并初始化數組中指定的元素
array = [4][2]int{1: {0: 20}, 3: {1: 41}}

下圖展示了上面示例中聲明的二維數組在每次聲明并初始化后包含的值。

7.2 訪問二維數組

二維數組通過指定坐標來訪問。如數組中的行索引與列索引,例如:

val := a[2][3]
/* 或 */
var value int = a[2][3]// 聲明兩個二維整型數組
var array1 [2][2]int
// 將 array1 的索引為 1 的維度復制到一個同類型的新數組里
var array3 [2]int = array1[1]

使用示例

package mainimport "fmt"func main() {/* 數組 - 5 行 2 列*/var a = [5][2]int{ {0,0}, {1,2}, {2,4}, {3,6},{4,8}}var i, j int/* 輸出數組元素 */for  i = 0; i < 5; i++ {for j = 0; j < 2; j++ {fmt.Printf("a[%d][%d] = %d\n", i,j, a[i][j] )}}
}

8. 向函數傳遞數組

向函數傳遞數組參數,需要在函數定義時,聲明形參為數組,有以下兩種形式:

(1) 形參設定數組大小

    void func(param [10]int){...}

(2) 形參未設定數組大小

    void func(param []int){...}

使用示例,函數接收整型數組參數,另一個參數指定了數組元素的個數,并返回平均值。

package mainimport "fmt"func main() {/* 數組長度為 5 */var  balance = []int {1000, 2, 3, 17, 50}var avg float32/* 數組作為參數傳遞給函數 */avg = getAverage(balance, 5) ;/* 輸出返回的平均值 */fmt.Printf( "平均值為: %f ", avg );
}func getAverage(arr []int, size int) float32 {var i, sum intvar avg float32  for i = 0; i < size;i++ {sum += arr[i]}avg = float32(sum) / float32(size)return avg
}

總結

以上是生活随笔為你收集整理的Go 学习笔记(10)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 最近中文字幕 | 一区二区三区av在线 | 亚洲欧美日韩精品在线观看 | av图片在线观看 | 婷婷二区| 欧美久久久影院 | 丁香婷婷网 | 99热网址 | 夜夜骑夜夜操 | 有码在线播放 | 人妻 校园 激情 另类 | 欧美性做爰猛烈叫床潮 | 国产精品久久777777换脸 | 久久久久久久久久一区二区 | 国产精品视频入口 | 国产又粗又长又黄视频 | 国产精品伦子伦免费视频 | 免费看的毛片 | 亚洲欧美一区二区三区在线观看 | 成人国产视频在线观看 | 国产欧美一区二区三区国产幕精品 | 在线观看黄色免费网站 | av私库| 黄a毛片 | 福利视频99 | 国产综合在线观看视频 | 伊人艹 | 三级不卡视频 | 一级黄网站 | 亚洲91网| 欧美www | 中文字幕精品久久久久人妻红杏1 | 黄色性生活一级片 | 亚洲欧美日韩系列 | 韩国美女一区 | 婷婷综合六月 | xxxx69视频| 国产伦精品一区二区三区免费 | 亚洲操图 | 国产原创在线播放 | 无码人妻丰满熟妇奶水区码 | 色屁屁一区二区三区 | 亚洲区色| 日韩精品视频免费播放 | 成人毛片在线播放 | 黄色网址进入 | 日韩av中文字幕在线免费观看 | 丰满人妻一区二区三区免费视频 | 国产精品视频第一页 | 人人澡人人澡人人澡 | videosex抽搐痉挛高潮 | 麻豆视频网站入口 | 午夜精品久久久久久久爽 | 成人福利在线视频 | 国产精品国产三级国产传播 | 国产女人在线视频 | 性xxxfllreexxx少妇 | 果冻传媒18禁免费视频 | 高h喷水荡肉少妇爽多p视频 | 久草免费网站 | 狠狠狠狠狠狠干 | 欧美激情视频一区二区三区不卡 | 欧美日韩成人一区二区在线观看 | 成人在线观看免费网站 | 日韩成人无码 | 91激情影院| 麻豆成人免费视频 | 日批视频在线免费看 | 姑娘第5集在线观看免费 | 国产精品久久无码 | av一二三四| 亚洲成人av综合 | 欧美破处大片 | av福利片 | 激情内射亚洲一区二区三区爱妻 | 午夜视频在线网站 | 午夜在线一区 | 在线免费看毛片 | 色亚洲影院 | 不卡视频在线观看免费 | 亚洲涩视频 | 色婷婷av一区二区三区四区 | 亚洲欧美乱日韩乱国产 | 一本在线免费视频 | 成年免费视频黄网站在线观看 | 婷色| 新av在线| 1000部啪啪 | 丁香花完整视频在线观看 | 日韩在线观看视频一区 | 特级淫片裸体免费看 | 琪琪色视频 | 成人午夜免费福利视频 | 一品毛片 | 亚洲国产视频一区 | 最近中文字幕在线中文视频 | 黄色av一区 | 又黄又色的网站 | 91精东传媒理伦片在线观看 |