go語言快速入門:內建函數(6) -开发者知识库

go語言快速入門:內建函數(6) -开发者知识库,第1张

go語言中有一些比較常用的內建函數,在這篇文章中將會進行簡單的介紹。

內建函數

函數名 說明 備注
close 關閉channel 僅用於channel通訊
delete 從map中刪除實例 map操作
len 返回字符串,slice和數組的長度 可用於不同的類型
cap 返回容量 可用於不同的類型
new 內存分配 用於各種類型
make 內存分配 僅用於chan/slice/map
copy 復制slice slice操作
append 追加slice slice操作
panic 報告運行時問題 異常處理機制
recover 處理運行時問題 異常處理機制
print 內建打印函數 主要用於不引入fmt的時候的調試,實際使用時建議使用標准庫fmt
println 內建打印函數 主要用於不引入fmt的時候的調試,實際使用時建議使用標准庫fmt
complex 構造復數類型 復數操作
real 抽出復數的實部 復數操作
imag 抽出復數的虛部 復數操作

len & cap

對象 len返回值 cap返回值
數組 數組元素個數 數組元素個數
指向數組的指針 數組元素個數 數組元素個數
slice 元素個數 slice的最大size >=len(slice)

map操作:delete

例子代碼

[root@liumiaocn goprj]# cat basic-buildin1.go
package main

import "fmt"

func main() {
m1 := make(map[string]int)
m1["Mon"] = 1
m1["Tue"] = 2
m1["Wed"] = 3

fmt.Println("before delete : m1=", m1, "len(m1)=", len(m1))

println("delete element by using key Tue")
delete(m1, "Tue")

fmt.Println("after delete : m1=", m1, "len(m1)=", len(m1))

}
[root@liumiaocn goprj]#

執行結果

[root@liumiaocn goprj]# go run basic-buildin1.go
before delete : m1= map[Mon:1 Tue:2 Wed:3] len(m1)= 3
delete element by using key Tue
after delete : m1= map[Mon:1 Wed:3] len(m1)= 2
[root@liumiaocn goprj]#

slice操作

例子代碼

[root@liumiaocn goprj]# cat basic-buildin2.go
package main

import "fmt"

func main() {
a1 := new([10]int)
a1[4] = 5
a1[7] = 8
fmt.Println("a1= ", a1, "len(a1)=", len(a1), " cap(a1)=", cap(a1))
s1 := make([]int, 5, 10)
s1[0] = 5
s1[4] = 2
s2 := make([]int, 5, 10)
s2[0] = 1
s2[4] = 3
fmt.Println("before copy :s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))
fmt.Println("before copy :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))
println("copy(s2,s1)")
copy(s2, s1)
fmt.Println("after copy :s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))
fmt.Println("after copy :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))
println("reset")
s2[0] = 1
s2[4] = 3
fmt.Println("after reset:s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))
fmt.Println("after reset :s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))
println("append(s2,20)")
s2 = append(s2, 6)
fmt.Println("after append:s1= ", s1, "len(s1)=", len(s1), " cap(s1)=", cap(s1))
fmt.Println("after append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))
s2 = append(s2, 7)
s2 = append(s2, 8)
s2 = append(s2, 9)
s2 = append(s2, 10)
fmt.Println("after append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))
s2 = append(s2, 11)
fmt.Println("after append:s2= ", s2, "len(s2)=", len(s2), " cap(s2)=", cap(s2))

}
[root@liumiaocn goprj]#

執行結果

[root@liumiaocn goprj]# go run basic-buildin2.go
a1= &[0 0 0 0 5 0 0 8 0 0] len(a1)= 10 cap(a1)= 10
before copy :s1= [5 0 0 0 2] len(s1)= 5 cap(s1)= 10
before copy :s2= [1 0 0 0 3] len(s2)= 5 cap(s2)= 10
copy(s2,s1)
after copy :s1= [5 0 0 0 2] len(s1)= 5 cap(s1)= 10
after copy :s2= [5 0 0 0 2] len(s2)= 5 cap(s2)= 10
reset
after reset:s1= [5 0 0 0 2] len(s1)= 5 cap(s1)= 10
after reset :s2= [1 0 0 0 3] len(s2)= 5 cap(s2)= 10
append(s2,20)
after append:s1= [5 0 0 0 2] len(s1)= 5 cap(s1)= 10
after append:s2= [1 0 0 0 3 6] len(s2)= 6 cap(s2)= 10
after append:s2= [1 0 0 0 3 6 7 8 9 10] len(s2)= 10 cap(s2)= 10
after append:s2= [1 0 0 0 3 6 7 8 9 10 11] len(s2)= 11 cap(s2)= 20
[root@liumiaocn goprj]#

復數操作

例子代碼

[root@liumiaocn goprj]# cat basic-buildin3.go
package main

import "fmt"

func main() {
var c1 = complex(1.1, 2)
var r1 = real(c1)
var i1 = imag(c1)
println("c1=", c1, " r1=", r1, " i1=", i1)
fmt.Println("c1=", c1, " r1=", r1, " i1=", i1)
}
[root@liumiaocn goprj]#

執行結果

[root@liumiaocn goprj]# go run basic-buildin3.go
c1= ( 1.100000e 000 2.000000e 000i) r1= 1.100000e 000 i1= 2.000000e 000
c1= (1.1 2i) r1= 1.1 i1= 2
[root@liumiaocn goprj]#

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复