91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言元組指的是什么

發布時間:2022-12-27 11:39:24 來源:億速云 閱讀:126 作者:iii 欄目:編程語言

這篇文章主要講解了“go語言元組指的是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“go語言元組指的是什么”吧!

元組是固定長度不可變的順序容器(元素序列),go語言中沒有元組類型,數組就相當于元組。在go語言中,數組是一個由固定長度的特定類型元素組成的序列,一個數組可以由零個或多個元素組成;數組的聲明語法為“var 數組變量名 [元素數量]Type”。

什么是元組

元組(tuple):固定長度不可變的順序容器,訪問效率高,適合存儲一些長常量數據。

簡單的理解就是將一堆數據存放到一個容器中,但這個容器有一個特點,就是很固執,一旦定義了之后就不可改變,從某種意義上來說元組就是不可以改變的列表,功能和列表類似,同樣可以進行切片、修改等操作。

go語言中沒有元組類型

go語言中的數組相當于python中的元組。

數組是一個由固定長度的特定類型元素組成的序列,一個數組可以由零個或多個元素組成。

Go語言中的數組

數組的聲明

數組的聲明語法如下:

var 數組變量名 [元素數量]Type

語法說明如下所示:

  • 數組變量名:數組聲明及使用時的變量名。

  • 元素數量:數組的元素數量,可以是一個表達式,但最終通過編譯期計算的結果必須是整型數值,元素數量不能含有到運行時才能確認大小的數值。

  • Type:可以是任意基本類型,包括數組本身,類型為數組本身時,可以實現多維數組。

在 Go 語言中 , 要創建數組, 可聲明一個數組變量,并指定其長度和數據類型。

只包含兩個元素,無法給第 3 個元素賦值,因此這將導致編 譯階段錯誤。

var cheeses [2]string
cheeses[O] = "Mar iolles”
cheeses[l] = ” Epoisses de Bourgogne ”

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

var a [3]int             // 定義三個整數的數組
fmt.Println(a[0])        // 打印第一個元素
fmt.Println(a[len(a)-1]) // 打印最后一個元素
// 打印索引和元素
for i, v := range a {
    fmt.Printf("%d %d\n", i, v)
}
// 僅打印元素
for _, v := range a {
    fmt.Printf("%d\n", v)
}

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

var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
fmt.Println(r[2]) // "0"

在數組的定義中,如果在數組長度的位置出現“...”省略號,則表示數組的長度是根據初始化值的個數來計算,因此,上面數組 q 的定義可以簡化為:

q := [...]int{1, 2, 3}
fmt.Printf("%T\n", q) // "[3]int"

數組的長度是數組類型的一個組成部分,因此 [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

遍歷數組——訪問每一個數組元素

遍歷數組也和遍歷切片類似,代碼如下所示:

var team [3]string
team[0] = "hammer"
team[1] = "soldier"
team[2] = "mum"
for k, v := range team {
    fmt.Println(k, v)
}

代碼輸出結果:

go語言元組指的是什么

代碼說明如下:

  • 第 6 行,使用 for 循環,遍歷 team 數組,遍歷出的鍵 k 為數組的索引,值 v 為數組的每個元素值。

  • 第 7 行,將每個鍵值打印出來。

Golang中實現tuple(元組)功能

雖然其他語言有tuple類型,但go語言卻沒有提供。但無需失望,go的其他特性可以非常容易實現tuple功能。下面通過示例來演示Go如何實現tuple類型功能。

使用struct

tuple可以存儲不同數據類型,我們可以使用interface{}類型支持任意數據類型。

package main

import "fmt"

func main() {
	type Student struct {
		name, age interface{}
	}

	stuList1 := []Student{
		{"tom", 21},
		{"jack", 22},
	}

	stuList2 := []Student{
		{"mary", 30},
	}
	// append stuList2 to stuList1
	stuList1 = append(stuList1, stuList2...)

	for _, stu := range stuList1 {
		fmt.Println(“stuInfo:”,stu)
	}
}


/*
Output:
stuInfo: {tom 21}
stuInfo: {jack 22}
stuInfo: {mary 30}
*/

通過輸出可以看到結果為類似于tuple類型,并且還可以通過點號訪問單個屬性。雖然這些特性都于tuple相關,但實際上它不是tuple類型。

返回多個值

通過tuple 函數可以返回多個值。雖然go沒有tuple類型,但支持返回函數返回多個值:

package main

import "fmt"

func multipleValues() (string, int) {
	return "Alex", 21
}

func main() {
	name, age := multipleValues()
	fmt.Println("Name :", name)
	fmt.Println("Age :", age)
}

/*
Output:
Name : Alex
Age : 21
*/

這里可以看到一次返回多個值。

感謝各位的閱讀,以上就是“go語言元組指的是什么”的內容了,經過本文的學習后,相信大家對go語言元組指的是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿克陶县| 海林市| 莱芜市| 喀什市| 天台县| 黎平县| 道孚县| 噶尔县| 什邡市| 哈巴河县| 凤翔县| 宜兰县| 浦县| 龙游县| 新源县| 安乡县| 略阳县| 华容县| 沧源| 岳阳市| 黄平县| 涞水县| 博白县| 佛坪县| 邯郸县| 达拉特旗| 台前县| 云安县| 仲巴县| 拉萨市| 宁陕县| 南岸区| 华蓥市| 利川市| 巴彦淖尔市| 怀柔区| 略阳县| 桓台县| 陵川县| 镇康县| 青冈县|