網站首頁 編程語言 正文
前言
Go 開發中經常設計到類型轉換,本文就重點記錄下 整形、浮點型和字符串類型互相轉換的方法。
整形轉字符串
fmt.Sprintf
將整數轉為字符串,字符串可以是2進制、8進制、10進制或者16進制的表示。
格式 | 描述 |
---|---|
%b | 整型以二進制方式顯示 |
%o | 整型以八進制方式顯示 |
%d | 整型以十進制方式顯示 |
%x | 整型以十六進制方式顯示 |
%X | 整型以十六進制、字母大寫方式顯示 |
使用方法
fmt.Sprintf("%d", int32(111)) // 111 fmt.Sprintf("%d", int64(111)) // 111 fmt.Sprintf("%d", 111) // 111 fmt.Sprintf("%b", 10) // 1010
strconv.Itoa
將 int 類型的整數 轉為 10進制的字符串表示,底層調用的就是下一個方法: FormatInt(int64(i), 10)
// Itoa is equivalent to FormatInt(int64(i), 10). func Itoa(i int) string { return FormatInt(int64(i), 10) }
使用方法
我們可以把int32、int64 先轉為 int,然后再使用該方法轉換
strconv.Itoa(1123) // 1123
strconv.FormatInt
將整數轉為字符串,字符串可選2到36進制的字符串表示。
入參
- i: int64類型的整數
- base: 表示要轉為的進制,支持2到36進制,使用最多的就是轉為10進制
func FormatInt(i int64, base int) string {}
使用方法
我們可以把int32、int 先轉為 int64,然后再使用該方法轉換
strconv.FormatInt(123, 10) // 123 strconv.FormatInt(123, 2) // 1111011
浮點型轉字符串
fmt.Sprintf
支持 float32、float64 轉 string
fmt.Sprintf("%f", 3.12344) // 3.123440 ???????// 控制輸出小數位數 fmt.Sprintf("%.2f", 323.12344) // 323.12 strconv.FormatFloat
入參
- f:float64類型的浮點數
- fmt: 轉為字符串后,字符串的類型:
- ‘b’ (-ddddp±ddd):二進制指數
- ‘e’ (-d.dddde±dd):10進制指數
- ‘E’ (-d.ddddE±dd):10進制指數
- ‘f’ (-ddd.dddd):無指數
- ‘g’ :指數很大時使用’e',其他使用 ‘f’
- ‘G’ :指數很大時使用 ‘E’,其他使用’f'
- ‘x’ (-0xd.ddddp±ddd):十六進制分數和二進制指數
- ‘X’ (-0Xd.ddddP±ddd):十六進制分數和二進制指數
- prec:控制經度
- 如果格式標記為 ‘e’、‘E’、‘f’、‘x’、‘X’,則 prec 表示小數點后的數字位數
- 如果格式標記為 ‘g’,‘G’,則 prec 表示總的數字位數(整數部分+小數部分)
- bitSize:表示f最初的類型。(雖然入參f是float64,有可能是float32轉過來的)
func FormatFloat(f float64, fmt byte, prec, bitSize int) string { return string(genericFtoa(make([]byte, 0, max(prec+4, 24)), f, fmt, prec, bitSize)) }
使用方法
strconv.FormatFloat(3.1415926, 'f', 5, 64) // 3.14159 strconv.FormatFloat(3.1415926e5, 'f', 5, 64) // 314159.26000
字符串轉整形
strconv.Atoi
string 轉 int,默認字符串是10進制的,相當于是下個方法 ParseInt(s, 10, 0) 的 10 進制轉化簡版
func Atoi(s string) (int, error)
使用方法
strconv.Atoi("1234") // 1234 <nil> strconv.Atoi("001") // 1 <nil>
strconv.ParseInt
string 轉 int32 int64 int,字符串可以是不同進制類型的。
// s: 數字的字符串形式 // base: 數字字符串的進制,支持0以及2-36。如果該字段為0,會根據字符串的前綴來推斷進制,比如"0b"->2進制、"0或0o"->8進制、"0x" -> 16進制 // bitSize: 返回結果的bit大小, 0 -> int, 8 -> int8、16 -> int16、32 -> int32、 64 -> int64。因為可以選擇不同的 bitSize,所以統一轉為int64,不會丟失精度。可根據需要的bitSize,自行轉回去 func ParseInt(s string, base int, bitSize int) (i int64, err error)
使用方法
// 轉int32 num, err := strconv.ParseInt("123",10,32) fmt.Println(int32(num), err) // 123 <nil> // 轉int64 num, err := strconv.ParseInt("123", 10, 64) fmt.Println(num, err) // 123 <nil> // 轉int num, err := strconv.ParseInt("123", 10, 64) fmt.Println(int(num), err) // 123 <nil> // 二進制轉int64 num, err := strconv.ParseInt("0b1001", 0, 64) fmt.Println(int(num), err) // 9 <nil>
字符串轉浮點型
strconv.ParseFloat
// s: 字符串 // bitSize: 要返回結果的精度 // 方法始終返回float64,即使 bitSize=32,返回 float64 也不會丟失精度 func ParseFloat(s string, bitSize int) (float64, error) { if bitSize == 32 { f, err := atof32(s) return float64(f), err } return atof64(s) }
使用方法
strconv.ParseFloat("123.213", 64) // 123.213 <nil> ??????? strconv.ParseFloat("123.213e3", 64) // 123213 <nil>
總結
本文介紹了整形、浮點型、字符串的互相轉換方法,可以記住 fmt.Sprintf方法,以及 strconv 包,用到時根據 IDE 的方法提示就可以搞定了!
原文鏈接:https://lifelmy.github.io/post/2021_12_07_go_type_transfer/
相關推薦
- 2022-05-26 .Net解決引用程序集沒有強名稱報錯_實用技巧
- 2022-11-17 C#實現表格數據轉實體的示例代碼_C#教程
- 2022-05-11 在 WebStorm 中誤添加自定義的 HTML 屬性,如何刪除
- 2022-03-30 C語言實現猜數字小項目_C 語言
- 2022-06-19 教你用vbs實現微信自動發送消息功能_vbs
- 2022-07-19 linux臨時修改網卡
- 2023-07-22 macos通過homebrew安裝多版本node
- 2022-05-20 docker內的容器如何與宿主機共享IP的方法_docker
- 最近更新
-
- 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同步修改后的遠程分支