Go語言引用型別

2022-01-22 16:39:09 字數 2999 閱讀 1118

切片

1、切片定義

a) 宣告乙個切片

var slice int

var slice = int

var slice int = int

b) 通過make來建立切片
var slice = make(int, 10)

c) 通過 := 語法來定義切片
slice := int

{}        slice := make(int, 10

)slice := make(int, 10, 10)

d) 通過運算元組來建立切片
var array = [...]int

var slice int = array[2:8]

e) 通過兩個冒號建立切片,slice[x:y:z]切片實體[x:y],切片長度len = y-x,切片容量cap = z-x
slice := int

slice := slice[2:6:8]

2、切片操作var a = int

b) 使用copy() 函式 copy 在兩個 slice 間複製資料,複製長度以 len 小的為準

var a = int

b := int

copy(a, b)

容器

1、map定義

a) 宣告乙個map

var m map[int]string

b) 通過make來建立map
var m1 map[int]string = make(map[int]string, 10

)

var m2 = make(map[int]string, 10)

c) 通過 := 語法來定義map
m1 := map[int]string

{} m2 := make(map[int]string, 10)

2、map增刪改查操作

m := map[string]string

a)增
m["

key2

"] = "

oldboy

"

b)查
value, ok := m["

key0

"]

c)刪
delete(m, "

key1

")

d)改
m["

key1

"] = "

golang

"

注意:map可以使用len()函式,但不能使用cap()函式

管道

1、channel定義

a) channel宣告

var ch chan int

var ch chan string

var ch chan map[int]string

b) 使用make定義,無緩衝channel
var ch1 chan int = make(chan int

)

var ch2 = make(chan int

) ch3 := make(chan int)

c) 使用make定義,有緩衝channel
var ch1 chan int = make(chan int, 10

)

var ch2 = make(chan int, 10

) ch3 := make(chan int, 10)

d) 唯讀channel(chan在<-之後)
var ch1 <-chan int

var ch2 <-chan int = make(<-chan int, 10

)

var ch3 = make(<-chan int, 10

) ch4 := make(<-chan int, 10)

e) 只寫channel(chan在<-之前)
var ch1 chan<- int

var ch2 chan<- int = make(chan<- int, 10

)

var ch3 = make(chan<- int, 10

) ch4 := make(chan<- int, 10)

注意:普通 channel 可以隱式轉為唯讀channel或只寫channel;唯讀channel或只寫channel不能轉為普通 channel。

2、管道操作

a) channel 寫入、讀取操作

ch := make(chan int, 1

) ch

<- 99

//寫入chan

value, ok := <-ch //

讀取chan

b) channel 關閉操作
close(ch)

注意:向已經關閉的 channel 傳送資料會引發 panic 錯誤

go語言的陣列是引用嗎 Go 語言沒有引用傳遞

就要學習 go 語言 系列 第 31 篇分享好文 需要明確的是,go 沒有引用變數,所以 go 語言裡呼叫函式的時也沒有引用傳遞。在一些開發語言中 比如 c 對已存在的變數可以宣告別名,這種別名稱為引用變數。1 include 23int main 可以看到 a b 和 c 都指向相同的記憶體位置。...

go 函式 作為型別 go語言

在go語言中國 可以把 函式作為一種型別 用 type 定義。利用這種特性 可以進行型別轉換。可以用作函式引數的 型別 來約束引數。型別轉換的基本格式如下 type name expression package main import fmt 宣告乙個函式型別 type calculatetype...

Go語言 字典型別

go語言的字典 map 型別其實是雜湊表 hash table 的乙個實現。字典用於儲存鍵 元素對 更通俗的說法是鍵 值對 的無序集合。注意,同乙個字典中的每個鍵都是唯一的。如果我們在向字典中放入乙個鍵值對的時候其中已經有相同的鍵的話,那麼與此鍵關聯的那個值會被新值替換。字典型別的字面量如下 map...