您好,登錄后才能下訂單哦!
這篇“Go語言中的數據類型有哪些及類型間怎么轉換”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Go語言中的數據類型有哪些及類型間怎么轉換”文章吧。
數據類型有很多,先研究一下基礎的,例如:布爾型、數字類型、字符串類型。
數字類型有uint8、uint16、uint32、uint64、int8、int16、int32、int64(uint和int區別在于uint為無符號整數,即只支持正數,不支持負數形式)
數字浮點型有fload32、float64、complex64、complex126(后面兩個均為實數和虛數類型,暫時先不研究)
樣例代碼如下:
//數據類型 func test_data() { var a bool var b int16 var c uint64 = 1231254353452 var d float32 = 1.78 fmt.Println(a) fmt.Println(b) fmt.Println(c) fmt.Println(d) fmt.Println("int8范圍:", math.MinInt8, math.MaxInt8) fmt.Println("uint8范圍:", math.MaxUint8) }
執行結果
false
0
1231254353452
1.78
int8范圍: -128 127
uint8范圍: 255
注意
1、如果沒有賦值的基礎數據類型變量具有初始值,不像java默認為null。bool類型的初始值為false,int的初始值為0。
2、uint和int的取值范圍不一樣,uint只是正數。
在工程中常常遇到數據類型轉換問題,測試一下。
樣例代碼如下
//數據類型轉換 func test_convert() { var num int = 10 var num1 float32 = float32(num) var num2 float64 = float64(num) fmt.Printf("num類型為%T,num1類型為%T,num2類型為%T\n", num, num1, num2) }
執行結果
num類型為int,num1類型為float32,num2類型為float64
注意一下Printf中格式化的動詞使用,特意找了下,整理一下。
動詞 | 功能 |
---|---|
%v | 按照值的本來值輸出 |
%+v | 在%v基礎上,對結構體字段名和值進行展開 |
%#v | 輸出Go語言語法格式的值 |
%T | 輸出Go語言數據類型 |
%% | 輸出%本體 |
%b | 輸出以二進制方式顯示的整型 |
%o | 輸出以八進制方式顯示的整型 |
%d | 輸出以十進制方式顯示的整型 |
%x | 輸出以十六進制方式顯示的整型,小寫 |
%X | 輸出以十六進制方式顯示的整型,大寫 |
%U | 以Unicode字符方式輸出 |
%f | 以浮點型方式輸出 |
%p | 指針,十六進制方式顯 |
這也是工程中經常使用的場景。
樣例代碼如下,先使用fmt的Sprintf方法轉換。
//基礎數據類型轉為string func test_convert_string() { var a int = 10 var b float64 = 1.8 var c bool = true var d byte = 'd' var e uint64 = 8 var str string fmt.Println(str + "a") str = fmt.Sprintf("%d", a) fmt.Printf("str類型為%T,str=%v\n", str, str) str = fmt.Sprintf("%f", b) fmt.Printf("str類型為%T,str=%v\n", str, str) str = fmt.Sprintf("%t", c) fmt.Printf("str類型為%T,str=%v\n", str, str) str = fmt.Sprintf("%c", d) fmt.Printf("str類型為%T,str=%v\n", str, str) str = fmt.Sprintf("%b", e) fmt.Printf("str類型為%T,str=%v\n", str, str) }
執行結果
a
str類型為string,str=10
str類型為string,str=1.800000
str類型為string,str=true
str類型為string,str=d
str類型為string,str=1000
注意
1、可以看到如果沒有對字符串類型做初始復制,會默認為空字符串。
使用strconv可以對各種數據類型進行字符串轉換。
樣例如下
//strconv的使用 func test_strconv() { var i int = 10 var x int = 999 var f float64 = 1.8 var t bool = false var z int = 97 var str string // 十進制int str = strconv.FormatInt(int64(i), 10) fmt.Printf("str類型為%T,str=%v\n", str, str) //十六進制int str = strconv.FormatInt(int64(x), 16) fmt.Printf("str類型為%T,str=%v\n", str, str) //浮點型,f表示格式,3表示位數,64表示轉換成float64 str = strconv.FormatFloat(float64(f), 'f', 3, 64) fmt.Printf("str類型為%T,str=%v\n", str, str) //布爾類型 str = strconv.FormatBool(t) fmt.Printf("str類型為%T,str=%v\n", str, str) //string函數和strconv.itoa區別 var str1 = strconv.Itoa(z) var str2 = string(z) fmt.Printf("str1類型為%T,str1=%v\n", str1, str1) fmt.Printf("str2類型為%T,str2=%v\n", str2, str2) }
執行結果
str類型為string,str=10
str類型為string,str=3e7
str類型為string,str=1.800
str類型為string,str=false
str1類型為string,str1=97
str2類型為string,str2=a
注意
1、FormatInt參數可以選擇10進制或者16進制。
2、FormatFloat參數可以選擇保留幾位小數。
3、Itoa方法可以將int轉為string,但是string方法會把數字轉換為ASCII碼值等于該整型數字的字符。
使用strconv可以將字符串轉化為基礎類型。
樣例代碼如下
//字符串轉為基礎類型 func test_string_convert() { var str string = "true" b, _ := strconv.ParseBool(str) fmt.Printf("b類型為%T,b=%v\n", b, b) str = "111" // 默認返回int64 i, _ := strconv.ParseInt(str, 10, 64) fmt.Printf("i類型為%T,i=%v\n", i, i) str = "1.908" f, _ := strconv.ParseFloat(str, 64) fmt.Printf("f類型為%T,f=%v\n", f, f) str = "abc" c, c1 := strconv.ParseInt(str, 10, 64) fmt.Printf("c類型為%T,c=%v\n", c, c) fmt.Printf("c1類型為%T,c1=%v\n", c1, c1) }
執行結果
b類型為bool,b=true
i類型為int64,i=111
f類型為float64,f=1.908
c類型為int64,c=0
c1類型為*strconv.NumError,c1=strconv.ParseInt: parsing "abc": invalid syntax
注意
1、":="等于聲明變量加賦值。
2、ParseInt返回的int類型為int64,ParseFloat返回的float類型為float64。
3、返回的值有兩個,如果解析失敗,則范圍該數據類型的初始化值,比如:int類型返回0。第二個值為異常,如果沒有異常則為空。
以上就是關于“Go語言中的數據類型有哪些及類型間怎么轉換”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。