默認值:
整型的默認值:0
浮點型的默認值:0
字符串的默認值:"" //空
布爾類型的默認值:false
package main
import "fmt"
func main() {
var a int //0
var b float32 //%f的輸出是0.000000,%v的輸出是0
var c float64 //%f的輸出是0.000000,%v的輸出是0
var isMarryied bool //false
var name string //""
//這里的%v 表示按照變量的值輸出
fmt.Printf("a=%d,b=%v,c=%v,isMarryied=%v,name=%v",a,b,c,isMarryied,name)
}
轉換:
golang和java / c 不同,Go在不同類型的變量之間賦值時需要顯示轉換。也就是說Golang中數據類型不能自動轉換。
基本語法:
表達式T(v) 將值v轉換為類型 T
T: 就是數據類型,比如int32, int64, float32等等
v: 就是需要轉換的變量
案例演示:
var i int = 42
var f float64 = float64(i)
var u uint8 = uint8(f)
fmt.Println(i,f,u)
細節說明:
1) Go中,數據類型的轉換可以是從 表示范圍小-->表示范圍大, 也可以 范圍大-->范圍小
2) 被轉換的是變量存儲的數據(即值),變量本身的數據類型並沒有變化!
3)在轉換中,比如將int64 轉成int8,編譯時不會報錯,只是轉換的結果是按溢出處理,和我們希望的結果不一樣。 因此在轉換時,需要考慮范圍。
var num1 int64 = 999999
var num2 int8 = int8(num1)
fmt.Println("num2=", num2) //63(這個就溢出了)
課堂練習:
第一題:
func main() {
var n1 int32 = 12
var n2 int64
var n3 int8
n2 = n1 + 20 //int32 -→ int64 錯誤
n3 = n1 + 20 //int32 -→ int8 錯誤
}
如何修改上面的代碼?
func main() {
var n1 int32 = 12
var n2 int64
var n3 int8
n2 = int64(n1) + 20
n3 = int8(n1) + 20
fmt.Println("n2=", n2, "n3=", n3)
}
第二題:
func main() {
var n1 int32 = 12
var n3 int8
var n4 int8
n4 = int8(n1) + 127 //編譯能通過,只是會有溢出
n3 = int8(n1) + 128 //編譯報錯,128超過了int8的范圍了,所以編譯的時候報錯。
fmt.Println(n3)
}
