[GO]Golang的一些特有基礎語法
阿新 • • 發佈:2021-10-16
1.下劃線
下劃線的作用是用來接收一個變數,並且不對其進行操作.
比如os.Open,返回值為*os.File,error.
普通寫法:
f,err := os.Open("xxxxxxx")
如果此時不需要知道返回的錯誤值 就可以用
f, _ := os.Open("xxxxxx")
如此則忽略了error變數.這樣編譯器可以更好的優化,任何型別的單個值都可以丟給下劃線。
2.變數宣告的形式
Go語言的變數宣告格式為:
var 變數名 變數型別
Go語言在宣告變數的時候,會自動對變數對應的記憶體區域進行初始化操作。每個變數會被初始化成其型別的預設值,例如: 整型和浮點型變數的預設值為0。 字串變數的預設值為空字串。 布林型變數預設為false
。 切片、函式、指標變數的預設為nil
。
可以在宣告的時候同時進行初始化:
var 變數名 型別 = 表示式
有時候我們會將變數的型別省略,這個時候編譯器會根據等號右邊的值來推導變數的型別完成初始化。
var 變數名 = 表示式
在函式內部,可以使用更簡略的 := 方式宣告並初始化變數。這種:=宣告方式不能用於函式外.
func main() { n := 10 //短宣告方式 m := 200 fmt.Println(m, n) }
匿名變數:在使用多重賦值時,如果想要忽略某個值,可以使用匿名變數,用一個下劃線_表示,匿名變數不佔用名稱空間,不會分配記憶體,所以匿名變數之間不存在重複宣告。
func foo() (int, string) { return 10, "test" } func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) }
3.Golang的字元,字串和切片
Golang的字串底層是一個byte陣列,所以可以和[]byte型別相互轉換。字串是不能修改的 字串是由byte位元組組成,所以字串的長度是byte位元組的長度。
要修改字串,需要先將其轉換成[]rune或[]byte
,完成後再轉換為string
。無論哪種轉換,都會重新分配記憶體,並複製位元組陣列。
func changeString() { s1 := "hello" // 強制型別轉換 轉為切片byteS1 byteS1 := []byte(s1) byteS1[0] = 'H' fmt.Println(string(byteS1)) //rune 型別是一種特殊的int32 用於處理中文等情況 s2 := "部落格" runeS2 := []rune(s2) runeS2[0] = '波' fmt.Println(string(runeS2)) }