[toc]golang
數值型
整數類型
int, int8(1字節), int16(2字節), int32(3字節), int64(4字節);數組
int8範圍: -2的七次方 到2的七次方 - 1
xxxx
xxx
xxx函數
uint, uint8, uint16, uint32, unit64, byte學習
uint8範圍:0 到2的8次方-1
xxxx
以此類推ui
rune ~ 等價int32, 表示一個unicode編碼
byte 0~255指針
浮點類型 float32, float64code
字符型:沒有專門的字符型,使用byte來保存單個字母字符orm
布爾型: bool接口
字符串:string
指針
數組
結構體
管道
函數
切片
接口
map
備註:
一、查看某個變量的數據類型
package main import "fmt" func main() { var n1 = 100 fmt.Printf("n1類型:%T", n1) } //n1類型:int
二、整型默認聲明類型爲int
package main import ( "fmt" "unsafe" ) func main() { var n1 = 100 fmt.Printf("n1 的 類型:%T, 佔用的字節數:%d", n1, unsafe.Sizeof(n1)) } //n1 的 類型:int, 佔用的字節數:8
三、變量在使用時,儘可能使用佔用空間小的數據類型
四、bit 計算機中的最小存儲單位
byte 計算機中基本存儲單元
1 byte = 8 bit
五、浮點數 = 符號位+指數位+尾數位 //這怎麼理解?
浮點默認聲明 float64類型
可能有精度損失?
float64精度比float32更準確
看一個例子:
package main import ( "fmt" ) func main() { var price1 float32 = -123.0000901 var price2 float64 = -123.0000901 fmt.Println("price1=", price1) //price1= -123.00009 fmt.Println("price2=", price2) //price2= -123.0000901 }
6.字符使用
若是保存的字符在ASCII表的, 好比[0-1, a-z, A-Z..] 直接保存到byte
對應碼值大於255, 能夠考慮使用int類型
package main import ( "fmt" ) func main() { //var price byte = '北' //overflow溢出 var price int = '北' fmt.Println("price=", price) //返回97 fmt.Printf("price=%c", price) //返回a }
存儲:字符->對應碼值->二進制->存儲
讀取: 二進制->碼值->字符->讀取
GO編碼統一utf8
七、字符串是不可變的
package main import ( "fmt" ) func main() { var str = "hello world" str[0] = 'a' //報錯 fmt.Println("str=", str) }
字符串的表示方式
1)雙引號, 會識別轉義字符
2)反引號, 以字符串的原生形式輸出,包括換行和特殊字符
package main import ( "fmt" ) func main() { str := "hello\nworld" fmt.Println("str=", str) str1 := ` package main import ( "fmt" ) func main() { str := "hello\nworld" fmt.Println("str=", str) ` fmt.Println("str1=", str1) }
字符串拼接:
package main import ( "fmt" ) func main() { str := "hello\nworld" + "你好" fmt.Println("str=", str) }
判斷進制存儲:
package main import ( "fmt" "strconv" ) func main() { n := int64(123) fmt.Println(strconv.FormatInt(n, 2)) //1111011 }