一. 內置函數
golang的內置函數共有十五個,不需要使用import
引入便可以直接使用的函數。
- make
make函數主要用來初始化和創建一個對象的,針對map(集合),slice(切片),channel(通道)類型,注意只支持這三種類型。
package main
func main() {
var test_map map[string]string //創建map集合
test_map = make(map[string]string) //初始化map(又或者叫實例化對象,我喜歡這麼理解,如果有錯誤歡迎指正)
test_map["hello"] = " world"
println(test_map["hello"]) //返回: world
}
- new
new的功能與make所實現的功能基本一樣,可以實現“初始化”map,slice,channel,但它和make工作原理有很大區別,make可以爲一個默認值爲nil的類型初始化,初始化後這個值爲空,什麼都沒有,而new所實現的是指向一個新的變量或方法,函數的內存地址,併爲其創建默認值爲0,下面來看例子
package main
import (
"fmt"
)
func main() {
a := new(int)
*a++
fmt.Println(*a) //指針指向a的值
fmt.Println(a) //通過new創建的變量值本身爲指向他的內存地址
}
- len
len函數可以得到數組,切片,map,string等類型的數據類型長度,注意這裏結構體(struct)int(整數型)和布爾型不能傳入len函數使用
package main
import "fmt"
func main() {
a := "hello"
fmt.Println(len(a)) //返回:5
}
//注意中文與英文所佔用的字節數不同,根據編碼的不同也不同,此處簡單演示,有興趣的可以自己研究一下
//golang的編碼默認爲utf-8,空格也算一個字節
- cap
cap的功能是返回變量等類型的容量,這裏使用數組來簡單演示
package main
import (
"fmt"
)
func main() {
var my_slice = [4]int{1, 2, 3, 4} //數組需要設置容量,容量長短是從1開始算起,而索引是0
fmt.Println(cap(my_slice)) //返回:4
}
- append
append爲添加內容到切片的尾部
package main
import (
"fmt"
)
func main() {
var my_slice = []int{1, 2, 4}
my_slice = append(my_slice, 1, 2, 3, 2)
fmt.Println(my_slice)
}
- copy
主要用於複製數組,將第二個參數的數組切片複製到第一個數組切片中,如果長度不一樣,以短數組爲準。
package main
import (
"fmt"
)
func main() {
my_slice := []int{1, 2, 3}
my_slice1 := []int{4, 5, 6}
a := copy(my_slice, my_slice1)
fmt.Println(a) //返回:[4 5 6]
}
- delete
用於刪除map的參數,參數對應map的key
package main
import (
"fmt"
)
func main() {
my_map := map[string]string{
"hello": "world",
"lo": "ve",
}
fmt.Println(my_map) //map[hello:world lo:ve]
delete(my_map, "hello")
fmt.Println(my_map) //map[lo:ve]
}
- panic
用於錯誤處理,執行到panic時會停止所有操作並打印從下向上的信息
package main
import (
"fmt"
)
func main() {
test()
}
func test() {
a := 2
b := 3
if a > b {
fmt.Println("good")
} else {
panic("error") //如果遇到不符合條件的或你設置的非法操作便會打印錯誤,並會打印從“error”向上返回的函數棧
println("hello world") //未被打印
}
}
- recover
用於程序出現了異常,如果不去管它,那程序會直接掛掉,而recover的功能是捕獲異常,返回異常信息,並繼續執行下去
package main
var x = 1
func main() {
Reset()
}
func Reset() {
if x := recover(); x != 2 {
panic("x is nil")
}
println("hello world") //可以自己嘗試panic後輸出信息,不會有任何輸出
}
- close
用於關閉channel
- print,println
屬於輸出到標準錯誤流中並打印,官方不建議寫程序時候用它,可以在debug時使用
二.常量標識符
- true,false
bool類型的兩個常量值;真 or 假
- iota
用在連續枚舉的聲明中,使用它可以記住變化的值
- nil
指針或引用類型的變量默認值是nil
三.空白標識符
- _
空白標識符,單獨拿出來說一下,一般是用來用來聲明一個空白變量,go中聲明的變量必須使用否則編譯時會報錯,如果想先起到佔位的作用就需要它。