golang的數據類型之基本數據類型的默認值和轉換


默認值:

整型的默認值: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)
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM