標籤:
var和const :變數和常量的聲明
var varName type 或者 varName : = value
package and import: 匯入
func: 用於定義函數和方法
return :用於從函數返回
defer someCode :在函數退出之前執行
go : 用於並行
select 用於選擇不同類型的通訊
interface 用於定義介面
struct 用於定義抽象資料類型
break、case、continue、for、fallthrough、else、if、switch、
goto、default 流程式控制制
chan用於channel通訊
type用於聲明自訂類型
map用於聲明map類型資料
range用於讀取slice、map、channel資料
大寫,即為public
常量在編譯的時候就已經確定,運行時不能改變。
go語言在聲明變數時還允許省略掉關鍵字“var”。而用“:”取代
。eg:count:=10
資料超出取值範圍會溢出。如var a int8=127 fmt.Println(a
+1)//這時候輸出-128
一般位元比較多的用float64來儲存。
byte型和uint8本質是一樣的,只是個別名,便於閱讀程式。另外要
注意的是要以字元型輸出要先轉換,位元組型資料直接輸出為整形
eg:var i,j byte
i=65//轉為string(i)輸出A
j=‘A‘//直接輸出為65
rune和int32本質是一樣的,別名,便於閱讀。rune是unicode編碼
指標變數初始化後的預設值的nil不是null,go中沒有null
<<為位元運算符,再不溢出的情況下,<<1等於乘以2的一次方,左移10
相當於乘以2的10次方。
&^為標誌位清除運算子,如a的二進位為00000110,b的二進位為
00001011,則a&^b=00000100,原理為根據b上1的位置,如果在相同的
位置a為0,則不變,如果為1改變為0,b是5 7 8位為1,a上5位為0,
不變,7位為1,變為0,8位為0,不變,所以結果為00000100
go語言運算在優先順序相同時自左向右
go字串遍曆分為位元組數遍曆和unicode遍曆
位元組遍曆類似for最簡單的運用,下面主要看unicode遍曆:
eg:str:=“aaaa真好”
for i, ch := range str {
fmt.Printf("str[%d]=%v\n", i, ch)
}/*輸出為:
str[0]=97
str[1]=97
str[2]=97
str[3]=97
str[4]=30495
str[7]=22909*/
常量組的初始化
const{
a=100
b
c
}
func main(){
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}//輸出為三個100;
原理為如果不提供初始值,將表示使用上行運算式。
但是這種方式只在常量組試用。
枚舉:
類似於常量組定義,不同的地方在後面加上 =iota//從0開始
一個例子:
const(
_=iota//忽略掉iota為0的情況
KB float64=1<<(10*iota)
MB
GB
TB
)
func main(){
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(GB)
fmt.Println(TB)
}//將顯示1024 1048576 1073741824 1099511627776表示各單位為多
少byte
bool的初始值為false
complex62和complex128的初始值都為0+0i。
全域變數試用var
局部變數可以省略var
因為go語言是型別安全的語言,所有的類型轉換全都是顯式的
int——float(float強制轉換為int保留整數部分)
string——[]byte
string——[]int
第二章到此結束,主要是夠的基礎資料型別 (Elementary Data Type)和定義常量變數。需要特
別注意的是iota和顯式轉換!
第三章還會再接再厲!
go語言總結第二章