網站首頁 編程語言 正文
1、基本數據類型
數據類型有很多,先研究一下基礎的,例如:布爾型、數字類型、字符串類型。
數字類型有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只是正數。
2、基礎數據類型轉換
在工程中常常遇到數據類型轉換問題,測試一下。
樣例代碼如下
//數據類型轉換
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 | 指針,十六進制方式顯 |
3、基本數據類型轉為字符串
這也是工程中經常使用的場景。
樣例代碼如下,先使用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、可以看到如果沒有對字符串類型做初始復制,會默認為空字符串。
4、strconv的使用
使用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碼值等于該整型數字的字符。
5、字符串轉為基礎類型
使用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。第二個值為異常,如果沒有異常則為空。
原文鏈接:https://blog.csdn.net/zhiweihongyan1/article/details/124106456
相關推薦
- 2024-01-06 RocketMQ消息丟失問題
- 2023-01-31 Android位圖(圖片)加載引入的內存溢出問題詳細解析_Android
- 2023-01-20 python的程序分支結構用法及說明_python
- 2022-11-25 DOS窗口命令和單表簡單查詢_DOS/BAT
- 2022-05-04 分享10提高?Python?代碼的可讀性的技巧_python
- 2022-12-25 React安裝node-sass失敗解決方案分享_React
- 2022-04-19 C語言內存管理及初始化細節示例詳解_C 語言
- 2022-11-03 如何在C++類的外部調用類的私有方法_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支