Golang中int,int64和字符串互轉(zhuǎn)
在 Go 語言開發(fā)中,類型轉(zhuǎn)換是日常操作中頻繁遇到的場景,尤其是整數(shù)類型(int、int64)與字符串(string)之間的轉(zhuǎn)換。本文將通過實(shí)例詳細(xì)講解這些轉(zhuǎn)換的常用方法,幫助開發(fā)者快速掌握類型轉(zhuǎn)換的技巧。
一、int 與 string 互轉(zhuǎn)
1. int 轉(zhuǎn) string:strconv.Itoa
Itoa(Integer to ASCII)
strconv.Itoa 是將 int 類型轉(zhuǎn)換為 string 類型的便捷函數(shù),其底層實(shí)際上是對 strconv.FormatInt 的封裝(自動將 int 轉(zhuǎn)換為 int64 后處理)。
示例代碼:
package main
import (
"fmt"
"strconv"
)
func main() {
var num int = 10
str := strconv.Itoa(num)
fmt.Printf("int 轉(zhuǎn) string:值=%s,類型=%T\n", str, str)
// 輸出:int 轉(zhuǎn) string:值=10,類型=string
}
2. string 轉(zhuǎn) int:strconv.Atoi
strconv.Atoi 用于將字符串轉(zhuǎn)換為 int 類型,其名字來源于 "ASCII to Integer" 的縮寫。需要注意的是,該函數(shù)會返回兩個值:轉(zhuǎn)換后的整數(shù)和可能的錯誤(如字符串格式不合法時)。
示例代碼:
func main() {
var str string = "100"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("轉(zhuǎn)換失?。?, err)
return
}
fmt.Printf("string 轉(zhuǎn) int:值=%d,類型=%T\n", num, num)
// 輸出:string 轉(zhuǎn) int:值=100,類型=int
}
注意:如果字符串無法轉(zhuǎn)換為整數(shù)(如 "abc" 或 "12.3"),err 會返回具體錯誤信息,實(shí)際開發(fā)中必須處理錯誤。
二、int64 與 string 互轉(zhuǎn)
1. int64 轉(zhuǎn) string:strconv.FormatInt
int64 轉(zhuǎn)換為 string 需要使用 strconv.FormatInt,該函數(shù)需要傳入兩個參數(shù):待轉(zhuǎn)換的 int64 數(shù)值和基數(shù)(通常為 10,表示十進(jìn)制)。
示例代碼:
func main() {
var num64 int64 = 100
str := strconv.FormatInt(num64, 10) // 基數(shù) 10 表示十進(jìn)制
fmt.Printf("int64 轉(zhuǎn) string:值=%s,類型=%T\n", str, str)
// 輸出:int64 轉(zhuǎn) string:值=100,類型=string
}
2. string 轉(zhuǎn) int64:strconv.ParseInt
strconv.ParseInt 用于將字符串轉(zhuǎn)換為 int64 類型,需要傳入三個參數(shù):待轉(zhuǎn)換的字符串、基數(shù)(通常為 10)和位數(shù)(如 64 表示轉(zhuǎn)換為 int64)。
示例代碼:
func main() {
var str string = "100"
num64, err := strconv.ParseInt(str, 10, 64) // 基數(shù) 10,目標(biāo)位數(shù) 64
if err != nil {
fmt.Println("轉(zhuǎn)換失?。?, err)
return
}
fmt.Printf("string 轉(zhuǎn) int64:值=%d,類型=%T\n", num64, num64)
// 輸出:string 轉(zhuǎn) int64:值=100,類型=int64
}
| 維度 | strconv.ParseInt(標(biāo)準(zhǔn)庫) | conv.Int64Default(自定義) |
|---|---|---|
| 來源 | Go 標(biāo)準(zhǔn)庫 strconv 包,內(nèi)置函數(shù) | 項(xiàng)目自定義工具函數(shù),非標(biāo)準(zhǔn)庫 |
| 返回值 | (int64, error):返回值 + 錯誤,需手動處理錯誤 | int64:僅返回值,轉(zhuǎn)換失敗時返回默認(rèn)值 |
| 靈活性 | 支持多基數(shù)(2-36)、位數(shù)控制(bitSize) | 通常僅支持十進(jìn)制,無位數(shù)控制(默認(rèn)按 int64 處理) |
| 適用場景 | 需嚴(yán)格校驗(yàn)轉(zhuǎn)換結(jié)果(如用戶輸入、關(guān)鍵數(shù)據(jù)解析) | 轉(zhuǎn)換失敗可接受默認(rèn)值的場景(如配置項(xiàng)、非關(guān)鍵參數(shù)解析) |
| 錯誤處理 | 暴露錯誤詳情(如格式錯誤、范圍溢出) | 隱藏錯誤,直接返回默認(rèn)值 |
三、int 與 int64 互轉(zhuǎn)
int 和 int64 同屬整數(shù)類型,轉(zhuǎn)換方式為顯式類型轉(zhuǎn)換(Go 不支持隱式轉(zhuǎn)換),直接通過類型名強(qiáng)制轉(zhuǎn)換即可。
1. int 轉(zhuǎn) int64
func main() {
var num int = 10
num64 := int64(num) // 顯式轉(zhuǎn)換
fmt.Printf("int 轉(zhuǎn) int64:值=%d,類型=%T\n", num64, num64)
// 輸出:int 轉(zhuǎn) int64:值=10,類型=int64
}
2. int64 轉(zhuǎn) int
func main() {
var num64 int64 = 100
num := int(num64) // 顯式轉(zhuǎn)換
fmt.Printf("int64 轉(zhuǎn) int:值=%d,類型=%T\n", num, num)
// 輸出:int64 轉(zhuǎn) int:值=100,類型=int
}
注意:int 類型的長度取決于操作系統(tǒng)(32 位系統(tǒng)為 4 字節(jié),64 位系統(tǒng)為 8 字節(jié)),而 int64 固定為 8 字節(jié)。當(dāng) int64 數(shù)值超過 int 類型的最大范圍時,轉(zhuǎn)換可能導(dǎo)致溢出,需謹(jǐn)慎使用。
四、總結(jié)
本文總結(jié)了 Go 語言中 int、int64 與 string 之間的轉(zhuǎn)換方法,關(guān)鍵函數(shù)和轉(zhuǎn)換規(guī)則如下:
| 轉(zhuǎn)換方向 | 方法 / 函數(shù) | 注意事項(xiàng) |
|---|---|---|
| int → string | strconv.Itoa(num) | 直接轉(zhuǎn)換,無需處理基數(shù) |
| string → int | strconv.Atoi(str) | 需處理錯誤,字符串必須為合法整數(shù) |
| int64 → string | strconv.FormatInt(num, 10) | 需指定基數(shù)(通常為 10) |
| string → int64 | strconv.ParseInt(str, 10, 64) | 需指定基數(shù)和位數(shù),處理錯誤 |
| int ↔ int64 | 顯式轉(zhuǎn)換(int64(num) 或 int(num64)) | 注意 int 類型長度限制,避免溢出 |
掌握這些轉(zhuǎn)換方法,能幫助你在處理數(shù)據(jù)輸入輸出、配置解析等場景中更加得心應(yīng)手。實(shí)際開發(fā)中,務(wù)必注意錯誤處理(尤其是字符串轉(zhuǎn)整數(shù)時),以保證程序的健壯性。
到此這篇關(guān)于Golang中int,int64和字符串互轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Golang中int 字符串互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go 1.22對net/http包的路由增強(qiáng)功能詳解
Go 1.22 版本對 net/http 包的路由功能進(jìn)行了增強(qiáng),引入了方法匹配(method matching)和通配符(wildcards)兩項(xiàng)新功能,本文將給大家詳細(xì)的介紹一下Go 1.22對net/http包的路由增強(qiáng)功能,需要的朋友可以參考下2024-02-02
GoFrame框架garray并發(fā)安全數(shù)組使用開箱體驗(yàn)
這篇文章主要介紹了GoFrame框架garray并發(fā)安全數(shù)組使用開箱體驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
在Golang中正確的修改HTTPRequest的Host的操作方法
我們工作中經(jīng)常需要通過HTTP請求Server的服務(wù),比如腳本批量請求接口跑數(shù)據(jù),由于一些網(wǎng)關(guān)策略,部分Server會要求請求中Header里面附帶Host參數(shù),所以本文給大家介紹了如何在Golang中正確的修改HTTPRequest的Host,需要的朋友可以參考下2023-12-12

