數據類型分類
一、數據類型-基本數據類型
1、整數型(int、有符號(int8/1字節、int16/2字節、int32/4字節、int64/8字節)、無符號(uint、uint8、uint16、uint32、uint64))
int--根據系統位數自動定義,系統是32位,則為int32,系統是64位,則位int64
uint--根據系統位數自動定義,系統是32位,則為uint32,系統是64位,則位uint64
2、浮點型:由符號位+指數位+位數位組成,分為float32,float64
尾數位可能會丟失,造成精度損失,不受操作系統的影響,聲明默認為64位
有兩種顯示方式:科學計數:534e3等價於534*10的3次方,534e-3等價於534/10的3次方,e不區分大小寫;小數時前面0可不寫
3、布爾型:只能是true,false,占用一個字節
4、字符串
字符:單引號括起來的單個字符,需要格式化輸出,%c,否則輸出字符碼數,
utf-8英文1個字節,中文3個字節
存儲:字符-對應碼數-二進制-存儲
讀取:二進制-對應碼數-字符-讀取
字符串不可修改,雙引號里有轉義字符會被識別,反引號里不會識別里面的轉移字符
5、格式化輸出符號
%c:該值對應的unicode碼值
%d:表示為十進制顯示
%T:值的類型
%q:該值對應的雙引號括起來的go語法字符串字面值
%f:顯示小數
二、數據類型-派生數據類型
指針、數組、結構體、管道、函數、切片、接口、map
數據類型轉換
一、int/float/bool/字符--轉換成str,用fmt.sprintf進行轉換,%q展示雙引號括起來的字符串面值
var( num4 = 1 num5 = 3.44 char = 'w' bl = true str1 string ) //int-->>string str1 =fmt.Sprintf("%d",num4) fmt.Printf("str=%q",str1)
// float-->>string str1 = fmt.Sprintf("%f",num5) fmt.Printf("str=%q",str1) //str-->>sting str1 = fmt.Sprintf("%c",char) fmt.Printf("str=%q",str) //bool-->>string str1 = fmt.Sprintf("%t",bl) fmt.Printf("str=%q",str1)
二、str轉int/float/bool,用strconv包的函數進行轉換
注意事項:
1、使用strconv包的函數,先導入strconv包,會返回兩個值,第一個是value,第二個是error,一個是報錯,報錯不需要用_忽略掉,%v-按原類型輸出
2、string類型轉基本數據類型能夠轉成有效數據
3、如將hello轉成int,不會報錯,直接顯示默認值0
4、如將hello轉成bool,不會報錯,直接顯示默認值false
5、ParseBool(變量名),(值,報錯)
6、ParseInt(變量名,顯示進制(10進制),多少位(int8/16/32/64)),(值-int64,報錯)
7、ParseFloat(變量名,位數flaot32/64),(值float64,報錯)
var( str2 = "true" b1 bool str3 = "122333" n1 int64 str4 = "23.33" n2 float64 ) //string轉bool,%v是展示值的默認格式 b1,_ = strconv.ParseBool(str2) fmt.Printf("b=%v",b1) //string轉int n1,_ = strconv.ParseInt(str3,10,64) fmt.Printf("n1=%v",n1) //string轉float n2,_ = strconv.ParseFloat(str4,64) fmt.Printf("n2=%v",n2) }