精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 語言 15 個內(nèi)置函數(shù)詳解

開發(fā) 前端
本文我們介紹 Go 語言的內(nèi)置函數(shù),讀者朋友們需要重點掌握的內(nèi)置函數(shù)是 len、cap、make、new、append、copy、delete、close、panic? 和 recover。

?01 介紹

Go 語言為了方便我們開發(fā),提供了 15 個內(nèi)置函數(shù),比如 len、cap、make? 和 new 等。

本文我們結(jié)合 Go 內(nèi)置函數(shù)官方文檔[1],介紹一下 Go 語言中的內(nèi)置函數(shù)。

02 內(nèi)置函數(shù)

內(nèi)置函數(shù)?append:

內(nèi)置函數(shù) append 可以將元素追加到切片的末尾。

func append(slice []Type, elems ...Type) []Type

當我們使用 append 向切片中追加元素時,切片的底層數(shù)組必須具有足夠的容量,否則,將會分配一個新的底層數(shù)組。

func main() {
s := []int{1, 2, 3}
fmt.Printf("%p %d\n", s, s)
s = append(s, 4)
fmt.Printf("%p %d\n", s, s)
}

輸出結(jié)果:

0xc0000b2018 [1 2 3]
0xc0000ae030 [1 2 3 4]

所以,我們需要注意的是,append 之后的切片賦值給同一個變量。

除了使用 append 向切片中追加元素之外,我們還可以向切片中追加另一個切片,例如:

s1 := []int{5, 6, 7}
s = append(s, s1...)

此外,還可以使用 append 將字符串追加到字節(jié)切片中,例如:

str := "hello "
bs := append([]byte(str), "world"...)

內(nèi)置函數(shù)?copy:

內(nèi)置函數(shù) copy 可以將源切片中的元素拷貝到目標切片。

func main() {
src := []string{"go", "vue"}
dst := make([]string, 2)
n := copy(dst, src)
fmt.Printf("%s %d\n", dst, n)
}

輸出結(jié)果:

[go vue] 2

copy? 的返回值是拷貝元素的個數(shù),返回值是 len(src)? 和 len(dst) 的最小值。

需要注意的是,源切片和目標切片中的元素可能會重疊。

此外,還可以使用 copy 將一個字符串中的字節(jié)拷貝到一個字節(jié)切片中,例如:

func main() {
str := "hello"
bs := make([]byte, 5)
n := copy(bs, str)
fmt.Printf("%s %d\n", bs, n)
}

內(nèi)置函數(shù)?delete:

內(nèi)置函數(shù) delete? 通過指定鍵 m[key]? 刪除 map 中的元素。

如果 map? 是 nil? 或沒有元素,delete 不做任何操作。

func main() {
var m map[int]string
fmt.Println(m)
delete(m, 0)
fmt.Println(m)
m1 := make(map[int]string)
fmt.Println(m1)
delete(m1, 0)
fmt.Println(m1)
m2 := make(map[int]string, 2)
m2[0] = "hello"
m2[1] = "world"
fmt.Println(m2)
delete(m2, 0)
fmt.Println(m2)
}

輸出結(jié)果:

map[]
map[]
map[]
map[]
map[0:hello 1:world]
map[1:world]

內(nèi)置函數(shù) ?len:

內(nèi)置函數(shù) len 返回值的長度,值的類型不同,值的長度含義也不同。

  • array 數(shù)組中元素的個數(shù)。
  • *array? 數(shù)組指針中元素的個數(shù),即使數(shù)組指針的值是 nil。
  • slice? 和 map? 切片或映射中元素的個數(shù),如果切片或映射的值是 nil,len(v) 值的長度是 0。
  • string 字符串中字節(jié)的個數(shù)。
  • channel? 通道緩沖區(qū)中未讀元素的個數(shù),如果緩沖通道的值是 nil,len(v) 值的長度是 0。
func main() {
arr := [3]int{1, 2, 3}
fmt.Println(arr)
fmt.Println(len(arr))
var arr1 *[3]int
fmt.Println(arr1)
fmt.Println(len(arr1))
var s []int
fmt.Println(len(s))
s = []int{1, 2, 3}
fmt.Println(len(s))
var m map[int]string
fmt.Println(len(m))
m = make(map[int]string)
m[0] = "hello"
fmt.Println(len(m))
str := "frank"
fmt.Println(len(str))
var c chan int
fmt.Println(c)
fmt.Println(len(c))
c = make(chan int)
fmt.Println(len(c))
}

輸出結(jié)果:

[1 2 3]
3
<nil>
3
0
3
0
1
5
<nil>
0
0

需要注意的是,slice、map? 和 channel? 必須先使用內(nèi)置函數(shù) make 初始化后,該類型的值才可以使用。

內(nèi)置函數(shù) ?cap:

內(nèi)置函數(shù) cap 返回值的容量,值的類型不同,值的容量含義也不同。

  • array? 數(shù)組中元素的個數(shù),數(shù)組的 cap(v)? 與 len(v) 相等。
  • *array? 數(shù)組指針中元素的個數(shù),數(shù)組指針的 cap(v)? 和 len(v) 相等。
  • slice? 切片可以容納元素的最大長度,如果切片的值是 nil?,該切片 cap(v) 值的容量是 0。
  • channel? 通道緩沖區(qū)的容量,如果通道的值是 nil?,該通道 cap(v) 值的容量是 0。
func main() {
var arr [3]int
fmt.Println(arr)
fmt.Println(cap(arr))
var arr1 *[3]int
fmt.Println(arr1)
fmt.Println(cap(arr1))
var s []string
fmt.Println(s)
fmt.Println(cap(s))
s = make([]string, 1)
s[0] = "go"
fmt.Println(s)
fmt.Println(cap(s))
var c chan int
fmt.Println(c)
fmt.Println(cap(c))
}

輸出結(jié)果:

[0 0 0]
3
<nil>
3
[]
0
[go]
1
<nil>
0

內(nèi)置函數(shù) ?make:

內(nèi)置函數(shù) make? 僅限為 slice、map? 和 channel 分配內(nèi)存并初始化。

func make(t Type, size ...IntegerType) Type

make 第一個參數(shù)是類型,而不是值;第二個參數(shù)是可選(變長)參數(shù),整型類型的值,返回值是該類型的值本身。

需要注意的是,第一個參數(shù)不同(不同類型),第二個參數(shù)的含義不同。

  • slice 第一個參數(shù)是切片類型,第二個參數(shù)的含義是指定切片的長度。如果沒有傳遞第三個參數(shù)(整型類型的值),切片的容量等同于切片的長度,否則,切片的容量等同于第三個參數(shù)的值,需要注意的是,切片的容量必須不小于切片的長度。
  • map 分配一個有足夠空間可以容納指定數(shù)量元素的空映射,第二個參數(shù)可以省略,如果省略第二個參數(shù),將分配一個起始值 0。
  • channel 指定緩沖區(qū)大小,初始化通道,如果第二個參數(shù)省略,或指定值為 0,該通道將被初始化為一個無緩沖通道。

內(nèi)置函數(shù) ?new:

內(nèi)置函數(shù) new? 也可以分配內(nèi)存,與 make 的區(qū)別是,它僅分配內(nèi)存,而未初始化。

和 make 相同,第一個參數(shù)是類型,而不是值;

和 make 不同,返回值是新分配的類型零值的指針。

內(nèi)置函數(shù) ?complex:

內(nèi)置函數(shù) complex? 將兩個浮點型的值構(gòu)造為一個復合類型的值,需要注意的是,實部和虛部必須是相同類型,即都是 float32? 或 float64。

返回值是對應的復合類型,即 complex64? 對應 float32? 或 complex128? 對應 float64。

內(nèi)置函數(shù) ?real:

內(nèi)置函數(shù) real 用于返回復合類型的值的實部,返回值是對應的浮點數(shù)類型。

內(nèi)置函數(shù) ?imag:

內(nèi)置函數(shù) imag 用于返回復合類型的值的虛部,返回值是對應的浮點數(shù)類型。

注意:complex、real? 和 imag 三個內(nèi)置函數(shù),一般不常用,讀者朋友們只需簡單了解即可。

內(nèi)置函數(shù) ?close:

內(nèi)置函數(shù) close 關閉通道,被關閉的通道必須是一個雙向通道或僅支持發(fā)送的單向通道。

并且 close 應該由發(fā)送者執(zhí)行,結(jié)果是在最后一個發(fā)送的值被接收后,關閉該通道。

通道被關閉后,任何該通道的接收者將返回成功而不會阻塞,接收者得到的返回值是該通道的類型零值和一個布爾類型的零值 false。

需要注意的是,不僅是關閉通道會返回 false?,空通道也會返回 false。

內(nèi)置函數(shù) ?panic:

內(nèi)置函數(shù) panic? 停止當前 goroutine? 正常執(zhí)行,當一個函數(shù) F? 調(diào)用 panic? 時,該函數(shù) F 立即停止正常執(zhí)行。

該函數(shù) F? 通過 defer? 延遲調(diào)用的任意函數(shù),仍然會執(zhí)行,并將執(zhí)行結(jié)果返回給 F 調(diào)用者。

對于 F? 的調(diào)用者 F2?,調(diào)用 F? 也會像調(diào)用 panic?,停止 F2? 的執(zhí)行,并運行 F2? 通過 defer? 延遲調(diào)用的任意函數(shù)。以此類推,一直持續(xù)到當前 goroutine 中的所有函數(shù)都以相反的順序停止運行。

此時,程序以非 0 退出代碼終止運行。

以上終止程序運行的序列稱為“恐慌”,可以通過接下來我們要介紹的內(nèi)置函數(shù) recover 進行控制。

內(nèi)置函數(shù) ?recover:

內(nèi)置函數(shù) recover? 允許程序管理“恐慌”的 goroutine 的行為。

可以在 defer? 中調(diào)用 recover 恢復正常執(zhí)行來停止“恐慌”,并且檢索導致“恐慌”的錯誤。

但是,如果在 defer? 之外調(diào)用 recover?,它不會恢復正常執(zhí)行來停止“恐慌”。此種情況,recover? 的返回值是 nil?。此外,當前執(zhí)行 recover? 的 goroutine? 未“恐慌”,或調(diào)用 panic(nil)? 時,recover? 的返回值也是 nil。

因此,我們可以通過 recover? 的返回值,判斷當前 goroutine 是否“恐慌”。

注意:此處講的在 defer? 中調(diào)用 recover?,是指在 defer? 本身中,而不是任何被 defer 調(diào)用的函數(shù)中。

內(nèi)置函數(shù) ?print:

內(nèi)置函數(shù) print 可以通過指定格式來格式化其參數(shù),并將結(jié)果輸出。

內(nèi)置函數(shù) ?println:

內(nèi)置函數(shù) println? 可以通過指定格式來格式化其參數(shù),并將結(jié)果輸出。與 print 的區(qū)別是,參數(shù)之間會添加空格,末尾會添加換行符。

注意:print? 和 println? 與標準庫 fmt? 中的 fmt.Print()? 和 fmt.Println()? 的區(qū)別是,前者是標準錯誤輸出,后者是標準輸出。在 Go 語言開發(fā)中,官方推薦使用標準庫 fmt 包,感興趣的讀者朋友們可以查閱相關資料進一步了解。

03 總結(jié)

本文我們介紹 Go 語言的內(nèi)置函數(shù),讀者朋友們需要重點掌握的內(nèi)置函數(shù)是 len、cap、make、new、append、copy、delete、close、panic? 和 recover。

責任編輯:武曉燕 來源: Golang語言開發(fā)棧
相關推薦

2023-05-08 00:06:45

Go語言機制

2023-10-13 19:42:00

2023-04-02 23:13:07

Go語言bufio

2024-10-28 00:40:49

Go語法版本

2023-02-10 09:40:36

Go語言并發(fā)

2009-02-24 16:17:41

日期時間函數(shù)

2021-04-13 07:58:42

Go語言函數(shù)

2024-05-10 08:04:44

開發(fā)者Go語言

2021-02-06 18:19:54

TimeGo語言

2022-07-04 14:41:31

Go 語言變長參數(shù)變長參數(shù)函數(shù)

2024-01-06 08:16:19

init?函數(shù)數(shù)據(jù)開發(fā)者

2021-10-16 17:53:35

Go函數(shù)編程

2022-07-03 23:07:48

Go語言參數(shù)

2020-05-26 13:45:46

Python函數(shù)字符串

2023-12-22 15:44:43

2020-06-24 07:44:12

Python數(shù)據(jù)技術(shù)

2021-11-28 22:33:01

Go選項模式

2013-12-30 10:42:42

C++特性

2019-11-12 16:44:50

Go語言泛函編程設計

2018-03-12 22:13:46

GO語言編程軟件
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品一区二区av影院萌芽| www.久久综合| 尤物tv在线精品| 欧美三级韩国三级日本三斤| 日韩视频在线观看视频| 欧洲av在线播放| 欧美96一区二区免费视频| 日韩在线国产精品| 男男做爰猛烈叫床爽爽小说| 成人啊v在线| 一片黄亚洲嫩模| 婷婷五月色综合| 亚洲免费一级片| 美女精品自拍一二三四| 欧美区国产区| 日韩午夜av一区| 国产性xxxx18免费观看视频| 国产在线观看免费麻豆| av在线不卡免费看| 亚洲自拍偷拍色片视频| 国产一区二区视频免费| 在线观看日韩av电影| 深夜福利国产精品| 欧美特黄一区二区三区| 国产一区二区三区不卡av| 欧美日韩三级在线| 国产男女激情视频| 岛国av在线播放| 亚洲激情图片一区| 一级做a爰片久久| 黄色网址在线播放| 成人av动漫在线| 91久色国产| 91无套直看片红桃| 蜜桃av一区二区三区电影| 欧美性受xxx| www.av视频在线观看| 亚洲精品电影| 久久久91精品| 黄色录像免费观看| 成人精品亚洲| 深夜成人在线观看| 久久日免费视频| 天堂中文字幕在线| 国产一区在线不卡| 成人高清视频观看www| 丰满人妻一区二区三区四区| 玖玖在线精品| 国产成人午夜视频网址| 不卡av电影在线| 日韩精品成人一区二区三区| 国产成人精品综合| 青青草视频在线观看免费| 亚洲欧美网站| 国产成人中文字幕| 国产精品传媒在线观看| 青草国产精品久久久久久| 国产精品美女免费看| 日本妇乱大交xxxxx| 免费观看成人av| 国产主播精品在线| av无码精品一区二区三区宅噜噜| 国产一区二区三区美女| 99国产在线| 日本精品一区二区在线观看| 99久久99久久久精品齐齐| 久久这里精品国产99丫e6| 青青免费在线视频| 国产精品午夜久久| 宅男在线精品国产免费观看| 9191在线播放| 亚洲a一区二区| 免费日韩视频在线观看| 日韩制服一区| 91精品国产福利| www.男人天堂| 狠狠综合久久av一区二区蜜桃| 一区二区中文字幕| 日本在线一级片| 亚洲精品乱码久久久久久蜜桃麻豆| **欧美日韩vr在线| 日韩国产亚洲欧美| 国产精品一区二区在线播放| 久草精品电影| 日本中文字幕在线视频| 亚洲一卡二卡三卡四卡五卡| 东京热加勒比无码少妇| 亚洲毛片在线免费| 亚洲精品aⅴ中文字幕乱码| av网站免费在线看| 中文字幕一区二区三区乱码图片| 88xx成人精品| 一级特黄aa大片| av网站一区二区三区| 日本不卡一区二区三区在线观看| av在线下载| 福利微拍一区二区| 中文 日韩 欧美| 亚洲人成网亚洲欧洲无码| 久久久999精品视频| 日韩毛片在线视频| 久久国产乱子精品免费女| 国产日韩一区二区三区| 永久免费在线观看视频| 天天爽夜夜爽夜夜爽精品视频| 国产男女激情视频| 粉嫩久久久久久久极品| 日韩在线观看你懂的| 天天干在线播放| 国产精品77777| 亚洲电影一二三区| 在线中文字幕播放| 欧美一卡二卡三卡四卡| 人妻互换一区二区激情偷拍| 亚洲毛片av| 成人夜晚看av| a中文在线播放| 精品久久久久久久久久国产| 国产精品嫩草69影院| 久久高清精品| 日韩av片电影专区| 午夜福利一区二区三区| 亚洲自拍偷拍图区| 香蕉视频色在线观看| 成人区精品一区二区婷婷| 91av在线播放| 免费看av毛片| 亚洲综合色区另类av| 99久久99精品| 久久精品影视| 国产欧美精品久久久| 国产一级片在线播放| 欧美午夜女人视频在线| 乱码一区二区三区| 国内精品久久久久久久影视蜜臀| 成人网在线免费观看| 午夜激情视频在线| 欧美日韩综合在线| 天堂资源在线视频| 免费观看久久久4p| 一本久道久久综合狠狠爱亚洲精品| 成人做爰视频www网站小优视频| 亚洲精品美女久久久| 91久久国产视频| eeuss影院一区二区三区| 无码熟妇人妻av在线电影| aaa国产精品视频| 欧美黄色性视频| 亚洲免费黄色片| 偷窥国产亚洲免费视频| 一起草在线视频| 中文一区在线| 欧美一进一出视频| 中文字幕系列一区| 日韩色av导航| 国产黄色一区二区| 亚洲成a人片在线不卡一二三区 | 成年人在线免费看片| 久久精品中文| 性欧美精品一区二区三区在线播放| 欧美性片在线观看| 综合久久五月天| 国产区精品在线| 亚洲一二三区在线观看| 国产人妻黑人一区二区三区| 久久精选视频| 一区二区在线观看网站| 免费观看亚洲视频大全| 国内精品久久久久伊人av| 日韩美女一级视频| 精品视频在线免费| 丁香花五月激情| av影院午夜一区| 欧美精品无码一区二区三区| 91九色精品| 国产精品美女xx| 欧美天堂视频| 久久在线精品视频| 天天摸天天干天天操| 欧美亚洲免费在线一区| 少妇影院在线观看| 99riav久久精品riav| 久久久国产欧美| 欧美日本免费| 牛人盗摄一区二区三区视频| 日本a人精品| 性色av一区二区三区在线观看| 国产高清在线| 精品国产伦一区二区三区观看方式| 99久热在线精品996热是什么| 欧美韩国日本综合| 佐佐木明希电影| 日韩电影一区二区三区| 六月婷婷激情综合| 欧美午夜精彩| 国产一区二区三区黄| 国产精品天堂蜜av在线播放| 国产69精品久久久久9999| av电影在线观看网址| 亚洲国产成人久久| 一区二区三区免费在线| 狠狠躁18三区二区一区| 91麻豆免费视频网站| 国产日本欧洲亚洲| 精品国产一区在线| 国产美女一区二区三区| 亚洲天堂av线| 国产精品日韩欧美一区| av日韩在线看| 手机在线电影一区| 久久影院理伦片| 国内毛片久久| 92国产精品久久久久首页 | 欧美日韩久久不卡| 欧美亚洲精品天堂| 亚洲国产视频一区二区| 五月综合色婷婷| 日本一二三不卡| 91精品人妻一区二区| 成人久久久精品乱码一区二区三区| 日本美女视频一区| 久久中文在线| 日本三级免费观看| 夜夜嗨一区二区| 一卡二卡三卡视频| 欧美精品播放| 男女激烈动态图| 久久久久久影院| 一区不卡视频| 久久视频国产| 亚洲日本一区二区三区在线不卡 | 亚洲人精选亚洲人成在线| 天天干天天操av| 亚洲国产精品成人va在线观看| av中文在线观看| 欧美一区二区观看视频| 国产裸体永久免费无遮挡| 在线成人av影院| 91精品国产乱码久久久久| 欧美日韩aaaaaa| 伊人网综合在线| 欧美日韩日日骚| 在线免费观看日韩视频| 欧美人与z0zoxxxx视频| 波多野结衣电影在线播放| 在线视频观看一区| 国产美女www| 欧美三级三级三级爽爽爽| 中文字字幕在线中文乱码| 欧美少妇bbb| 91亚洲视频在线观看| 91精品视频网| 亚洲a视频在线观看| 亚洲成成品网站| 色视频在线观看| 亚洲无av在线中文字幕| 欧美一区二区三区| 美日韩精品视频免费看| 成年人视频免费在线播放| 97碰在线观看| av在线日韩| 91免费综合在线| 18国产精品| 免费中文日韩| 首页国产精品| 麻豆md0077饥渴少妇| 亚洲大胆在线| 成人免费视频久久| 狠狠色丁香久久婷婷综合_中| 日本wwwxx| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲综合欧美综合| 亚洲欧美电影院| 久久久久久久久影院| 欧美色大人视频| 精品国产99久久久久久宅男i| 亚洲第一视频在线观看| 精品欧美不卡一区二区在线观看| 综合久久五月天| 国产探花视频在线观看| 日韩av理论片| 亚洲成人黄色| 清纯唯美一区二区三区| 中文字幕一区二区三三| 国产精品97在线| 国产一区二区三区在线观看免费视频 | 成年人午夜剧场| 天天综合天天综合色| 国产一区二区三区中文字幕| 亚洲国产成人一区| 亚洲天天影视| 2018国产精品视频| 国产精品高清一区二区| 免费日韩电影在线观看| 欧美韩国一区| 激情 小说 亚洲 图片: 伦| 成人av免费在线观看| 中文字幕精品亚洲| 福利一区视频在线观看| 国产特级aaaaaa大片| 亚洲欧洲午夜一线一品| 四虎av在线| 国产在线精品成人一区二区三区| 久久91在线| 欧美少妇在线观看| 蜜臀av一级做a爰片久久| 强迫凌虐淫辱の牝奴在线观看| **性色生活片久久毛片| 草莓视频18免费观看| 精品播放一区二区| 国产在线高潮| 国产精品久久久久久久app| 久久资源综合| 少妇大叫太大太粗太爽了a片小说| 日本伊人色综合网| 丰满少妇一区二区| 亚洲第一久久影院| 精品国产av一区二区三区| 精品国内亚洲在观看18黄| 欧美日韩在线精品一区二区三区激情综合 | 亚洲综合免费视频| 亚洲图片制服诱惑| 刘亦菲一区二区三区免费看| 国产精品久久久一区二区三区| 牛牛国产精品| 日本一二区免费| 国产精品沙发午睡系列990531| xxxx.国产| 亚洲精品720p| 久久男人av资源站| 国产一区在线免费| 亚洲一级黄色| 97精品人人妻人人| 亚洲综合成人在线| 成人免费公开视频| 欧美激情免费在线| youjizz亚洲| 老子影院午夜伦不卡大全| 高清免费成人av| 国产真实的和子乱拍在线观看| 日韩视频一区在线观看| 91蜜桃在线视频| 99久久99久久精品国产片| 欧美日韩国产高清| 韩国三级在线看| 婷婷丁香久久五月婷婷| 五月天丁香视频| 欧美一级免费视频| 国产毛片一区二区三区 | 国产激情视频一区二区在线观看 | 成人av毛片| 91精品国产自产在线| 亚洲成人三区| 亚洲精品久久一区二区三区777| 亚洲综合999| 爽爽视频在线观看| 国产精品都在这里| 久久五月天小说| 成人在线观看一区二区| 午夜伦欧美伦电影理论片| 日本午夜在线| 国产精品一二三在线| 中文不卡在线| 国产熟女高潮一区二区三区| 欧美性生交xxxxxdddd| a黄色在线观看| 91精品视频观看| 亚洲国产精品一区| 久久久久亚洲av成人无码电影| 色婷婷综合久久久久中文一区二区 | 久久久久久网站| 国产欧美日韩| 免费不卡av网站| 色综合一区二区三区| 国产在线二区| 欧美精品成人一区二区在线观看| 美女视频黄久久| 日韩精品视频免费看| 色妞欧美日韩在线| 岛国精品一区| 激情视频免费网站| 一区二区在线看| 国产精品久久久久久久龚玥菲| 91视频国产精品| 欧美亚洲视频| 国产精品国产精品88| 国产丝袜高跟一区| 亚洲最大的免费视频网站| 男女猛烈激情xx00免费视频| 国产日韩精品一区二区三区| 精品人妻aV中文字幕乱码色欲| 欧洲美女7788成人免费视频| 天天综合久久| a级在线观看视频| 欧美一级理论性理论a| 欧美精品日日操| www插插插无码免费视频网站| 欧美激情在线观看视频免费| 人人妻人人澡人人爽精品日本 | 亚洲一级视频在线观看|