日韩性视频-久久久蜜桃-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)— 数组定义、数组声明、数组初始化、访问数组、数组相等、向函数传递数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 真实的中国女人做爰 | 涩涩视频在线观看免费 | 亚洲经典三级 | 悠悠色影院| 久久亚洲影院 | 哺乳援交吃奶在线播放 | 女人高潮娇喘1分47秒 | 黄色大片网站 | 国产91精品在线观看 | 噜噜噜精品欧美成人 | 国产精品免费视频一区 | 高清性爱视频 | 久草福利免费 | 天堂av资源在线 | 无码任你躁久久久久久久 | 性欧美4khd高清极品 | 96日本xxxxxⅹxxx17 | 久久久久久久久久成人 | 国产日日夜夜 | 小柔的淫辱日记(1~7) | 久久在线免费观看 | 亚洲色婷婷久久精品av蜜桃 | 欧美另类视频在线 | 午夜精品久久久久久久久久蜜桃 | 欧美亚洲中文精品字幕 | 中日韩男男gay无套 人人草人人干 | julia一区二区三区中文字幕 | 一本大道熟女人妻中文字幕在线 | 欧美成人精品欧美一级私黄 | www香蕉视频| 成人毛片在线视频 | 97人人爽人人爽人人爽人人爽 | 免费在线观看av网站 | 日韩一区二区免费播放 | 亚洲国产综合一区 | 裸体裸乳被免费看视频 | 国产欧美一区二区三区在线看蜜臂 | 91老肥熟 | 久久久久亚洲av片无码 | aaaa免费视频 | 一级黄视频 | 国产激情一区二区三区视频免樱桃 | 欧美激情视频一区二区三区不卡 | 97色涩| 激情五月色婷婷 | 国产一区二区网 | 亚洲最大av在线 | 久久精品9 | 欧美偷拍另类 | 激情爱爱网站 | 狠狠的色| 亚洲国产aⅴ成人精品无吗 日韩乱论 | 欧美成人一级视频 | 亚洲欧美一区二区三区情侣bbw | 国产成人精品一区二区三区 | 国产麻豆视频 | 精品久久久久久久久久久 | 一级成人黄色片 | 成人av高清 | 成年丰满熟妇午夜免费视频 | 色伊人av | 日韩精品视频在线 | 亚洲 欧美 自拍偷拍 | 中国肥胖女人真人毛片 | 久久艹久久 | 亚洲视频国产 | 久久毛片网站 | 理论片午夜| 亚洲精选久久久 | 天堂精品一区二区三区 | 伊人午夜 | 久久人人爽人人人人片 | 日韩成人一区二区三区 | av在线免费播放网站 | 欧美夜夜操 | 久久一区二区电影 | 久久免费手机视频 | 国产1区2区在线观看 | 热re99久久精品国产99热 | 久草精品在线观看视频 | 国产一区二区三区在线播放无 | 日韩欧美在线一区 | 爽好多水快深点欧美视频 | 麻豆av一区二区三区在线观看 | 丰满人妻一区二区三区53 | 亚洲一区欧美二区 | 最新中文字幕av专区 | 一级肉体全黄毛片 | 少妇人妻无码专区视频 | 中文无码av一区二区三区 | 性一交一乱一色一免费无遮挡 | 美女扒开粉嫩的尿囗给男生桶 | 亚洲综合激情在线 | 在线的av | 国产麻豆剧果冻传媒白晶晶 | 一区二区三区人妻 | 999国产| 日韩精品――色哟哟 | 精品亚洲国产成人av制服丝袜 |