三:go語言變數,常量,列舉,布林
1:一個包下面可以有多個人原始檔 2:import按照書序匯入載入(優先執行檔案裡的init方法) 3:類型別名不能參加正常運算(要同一個型別的前提下才行) 4:申明的變數沒有使用,也會報錯 5:定義包名 -> 最好資料夾唯獨定義包名 6:var a,b,c = 11,21,31 / a,b,c := 11,21,31 (全部變數必須要有var關鍵字,區域性變臉可以不用var) 7:var a,_,c = 11,21,31 //下劃線表示把值丟到垃圾桶 8:型別轉換(不相容的型別是不能轉換的) var a int =3 var b float32 = 3.01 c := float32(a) fmt.Print(c) fmt.Print(reflect.TypeOf(c)) //獲取值的型別 9:變數可見性 var name = "leyangjun" var Name = "leyangjun" --> 外部包呼叫的時候只能呼叫Name,不能呼叫name,小寫的會認為是私有變數
2.1:變數
2.1.1 :申明變數
var v1 int
var v2 string
var v4 [10]int 陣列
var v5 struct{
f int
}
2.1.2:變數初始化
var v1 int = 10
var v2 = 10 //編譯器可以自動推匯出v2的型別
v3 := 10 //編譯器可以自動推匯出v3的型別(出現在 := 左邊的變數不應該是已經申明過得,否則會導致編譯錯誤)
2.1.3:變數賦值
var v10 int
v10 = 123
i,j = j,i //多重賦值,交換變數值
2.2 常量
2.2.1 常量定義
const Pi float64 = 3.14.。。。。。。。。。。。
const (
size int64 = 1024
eof = -1
)
const u,v float32 = 0,3 //u = 0.0 ,v = 3.0 常量的多重賦值
const a,b,c = 3,4,"leyangjun" //a=3,b=4,c="foo" ,無型別整型和字串常量(無型別常量)
2.2.2 預定義變數
const a = iota
const b = iota //a,b的常量值都重置為0
const(
a = iota //0
b = iota //1 ,計數開始加1
)
2.2.3 列舉
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Firday
Saturday
numberOfDays //這個常量沒有匯出,為私有,其他可以訪問【大寫字母開頭的常量在包外可見】
)
2.3 型別
1:布林型別 bool
2:整型 int8,byte,int16,int,uint,uintptr
3:浮點型別 float32,float64
4:複數型別 complex64
5: 字串型別 string
6:字元型別 rune
7: 錯誤型別 error
go語言也支援符合型別
1:指標 pointer
2:陣列 array
3:分片 slice
4:字典 map
5:通道 chan
6:結構體 struct
7:介面 interface
2.3.1:布林型別
var v1 bool
v1 = true
v2 := (1 == 2) //v2會被推到為bool型別
注意:布林型別不能接受其他型別的賦值,不支援自動或強制型別轉換
var b bool
b = 1 //編譯錯誤
b = bool(1) //編譯錯誤
正確做法
var b bool
b = (1 != 0)
fmt.PrintIn("Result:",b) //打印出true
2.3.2:整型
注意:int 和 int32在Go裡被認為是兩種不同型別
var value1 value2
value1 := 64 //value1將會被自動推導為int型別
value2 = value1 //編譯錯誤
value2 = int32(value1) //編譯通過
數值運算:+ ,-, *, /
比較運算:>, <, == ,>= ,<= ,!=
2.3.3:浮點型號
包含兩種:float32,float64,其中float32等價於C語言的float型別,float64等價於C語言double型別
var fvalue1 float32
fvalue1 = 12
fvalue2 := 12.0 //如果不加小數點,fvalue2會被推導為整型而不是浮點型
fvalue1 = fvalue2 //編譯錯誤
fvalue1 = float32(fvalue2) //強制型別轉換
2.3.4:字串
var str string
str = “leyangjun” //字串賦值
ch := str[0] //取字串的第一個字元
注意:字串的內容不能再初始化後被修改