Go | 基本數據類型詳解

前言基本數據類型 , 變量存的就是值,也叫值類型 。每一種數據都定義了明確的數據類型,在內存中分配了不同大小的內存空間 。

Go | 基本數據類型詳解

文章插圖
Printf 和 Println 的區別
  • printf 輸出后不換行,println輸出后自動換行;
  • printf 格式化輸出,println 直接輸出內容
  • Printf 根據format參數生成格式化的字符串并寫入標準輸出 。
判斷數據類型以及查看變量使用內存空間package main// import "unsafe"// import "fmt"// 引入多個import ("fmt""unsafe")func main() { var i int8 = 12 fmt.Println("i= ", i) var i2 uint8 = 129 fmt.Println("i2= ", i2) var n = 12 fmt.Printf("n的類型是%T\n", n) // n的類型是int var name = "xiao" fmt.Printf("name的類型是%T\n", name) // name的類型是string // 查看變量占用的字節大小和數據類型 fmt.Printf("name的類型是%T", name, unsafe.Sizeof(name))}基本數據類型數值型整數類型 (默認值是0)int, int8, int16, int32, int64uint, uint8, uint16, uint32, uint64     無符號數(表示的范圍更大)byte
  • bit: 計算機中的最小存儲單位
  • byte: 計算機中基本存儲單元
  • 1byte = 8bit (一個字節8位)
【Go | 基本數據類型詳解】
Go | 基本數據類型詳解

文章插圖

Go | 基本數據類型詳解

文章插圖

Go | 基本數據類型詳解

文章插圖
var i int8 = -129// constant -129 overflows int8var i2 uint8 = -129// constant -129 overflows uint8浮點類型 (默認值是0)
  • float32
  • float64(默認類型)

Go | 基本數據類型詳解

文章插圖
浮點數 = 符號位 + 指數位 + 尾數位
浮點數都是有符號的
使用浮點類型的時候就需要注意存在丟失精度的問題
var num1 float32 = 12.556883123132   // 精度會丟失var num2 float64 = 12.556883123132   // 64位比32位精度要準確fmt.Println("num1=", num1, "num2", num2) // num1= 12.556883 num2 12.556883123132var num = 12.64fmt.Printf("num的類型", num) // num的類型%!(EXTRA float64=12.64)var num3 = 5.6e2   //  5.6 * 10^2 = 5.6 * 100 = 560fmt.Println("num3=", num3)字符型沒有專門的字符型,使用byte來保存單個字母字符
ASCII碼(128個)
  • Go語言的字符使用UTF-8編碼
  • 英文字母:1個字節
  • 漢字:3個字節
  • 字符必須使用單引號括起來,雙引號會報錯
單引號針對單個字符,字符串要使用雙引號
UTF-8是對ASCII的擴容
var str1 byte = 'a'var str2 byte = '0'// 當直接輸出byte時,輸出的使對應字符的ASCII碼值(十進制)fmt.Println("str1", str1, "str2", str2) // str1 97 str2 48fmt.Printf("str1=%c str2=%c", str1, str2) // str1=a str2=0fmt.Printf("str1=%c", str1) // str1=afmt.Printf("str2=%c", str2) // str2=0var name byte = '吖'fmt.Printf("name=%c", name) // overflows byte 超出byte類型的存儲范圍了// 漢字更換成int類型var name int = '吖'fmt.Printf("name=%c", name) // name=吖var name1 int =22269fmt.Printf("name1=%c", name1) // name1=國// 數據類型只是為了定義存儲空間的大小,對應計算機中的內存空間
Go | 基本數據類型詳解

文章插圖
布爾型(bool)(默認值是false)用于邏輯運算,流程控制 。bool類型只占用一個字節的內存空間
var a = falsefmt.Println(a)  // falsefmt.Println(unsafe.Sizeof(a))  // 1

推薦閱讀