天天看點

golang 學習筆記 --基本類型

字元串值表示了一個一個字元值的集合,在底層,一個字元串值即一個包含了若幹位元組的序列,長度為0的序列與一個空字元串對應。字元串的長度即底層位元組列中位元組的個數。

字元串值是不可變的,對字元串的操作隻會傳回一個新的字元串,而不會改變原字元串并傳回。

隻有基本類型及其别名類型才可以作為常量的類型

數組的長度是數組類型的一部分。類型聲明中的數組長度不同,即使數組類型的元素類型相同,他們也是不同的類型。

數組:長度不可變

數組零值: 一個不包含任何元素的空數組。

var ipv4 = [...]uint8{192,168,0,1}

切片:長度可變,引用類型,零值的長度與容量都為0

var ips = []string{"192.168.0.1","192.168.0.2"}

ips.append("192.168.0.3")

ips = make([]string,100)  

fmt.Println(len(ips))  //100

fmt.Println(cap(ips))   //100

字典:其官方稱謂是map,引用類型,零值是nil,零值的長度為0

var ipSwitches = map[string]bool{}

ipSwitches["192.168.0.1"]=true

delete(ipSwitches,"192.168.0.1")

函數與方法

在go中,函數是一等類型,可以将其當做一個值來傳遞和使用。

函數可以沒有參數清單,也可以沒有結果清單,但空參數清單必須保留括号,而空結果清單可以不用

eg: 

func printTab(){

...//省略

}

參數清單中參數必須有名稱,結果清單中結果名稱可有可無

func divide(dividend int,divisor int)(result int,err error){      
if divisor == 0{      
err = errors.New("division by zero")      
return      
}      
result = dividend/divisor      
return       
}


接口:定義了一組行為,其中每個行為都由一個方法聲明表示。(方法聲明隻有方法簽名而沒有方法體)
eg: 
type Talk interface{
  Hello(userName string)string
  Talk(heard string)(saying string, end bool, err error)
}

隻要一個資料類型的方法集合中包含了Talk接口聲明的所有方法,那麼它就是Talk接口的實作類型。

結構體:值類型,其零值不是nil