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 的封裝(自動(dòng)將 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ù)會(huì)返回兩個(gè)值:轉(zhuǎn)換后的整數(shù)和可能的錯(cuò)誤(如字符串格式不合法時(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 會(huì)返回具體錯(cuò)誤信息,實(shí)際開發(fā)中必須處理錯(cuò)誤。
二、int64 與 string 互轉(zhuǎn)
1. int64 轉(zhuǎn) string:strconv.FormatInt
int64 轉(zhuǎn)換為 string 需要使用 strconv.FormatInt,該函數(shù)需要傳入兩個(gè)參數(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 類型,需要傳入三個(gè)參數(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):返回值 + 錯(cuò)誤,需手動(dòng)處理錯(cuò)誤 | int64:僅返回值,轉(zhuǎn)換失敗時(shí)返回默認(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ù)解析) |
| 錯(cuò)誤處理 | 暴露錯(cuò)誤詳情(如格式錯(cuò)誤、范圍溢出) | 隱藏錯(cuò)誤,直接返回默認(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 類型的最大范圍時(shí),轉(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) | 需處理錯(cuò)誤,字符串必須為合法整數(shù) |
| int64 → string | strconv.FormatInt(num, 10) | 需指定基數(shù)(通常為 10) |
| string → int64 | strconv.ParseInt(str, 10, 64) | 需指定基數(shù)和位數(shù),處理錯(cuò)誤 |
| int ↔ int64 | 顯式轉(zhuǎn)換(int64(num) 或 int(num64)) | 注意 int 類型長度限制,避免溢出 |
掌握這些轉(zhuǎn)換方法,能幫助你在處理數(shù)據(jù)輸入輸出、配置解析等場景中更加得心應(yīng)手。實(shí)際開發(fā)中,務(wù)必注意錯(cuò)誤處理(尤其是字符串轉(zhuǎn)整數(shù)時(shí)),以保證程序的健壯性。
到此這篇關(guān)于Golang中int,int64和字符串互轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Golang中int 字符串互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
go從指定的URL下載圖片并保存到本地的代碼實(shí)現(xiàn)
這段代碼定義了一個(gè)名為 downloadImage 的函數(shù),其目的是從指定的URL下載圖片并保存到本地文件系統(tǒng),本文是對代碼功能的詳細(xì)描述,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
Apache?IoTDB開發(fā)系統(tǒng)之Go原生接口方法
這篇文章主要為大家介紹了?Apache?IoTDB開發(fā)系統(tǒng)之Go原生接口方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Golang?使用os?庫的?ReadFile()?讀文件最佳實(shí)踐
這篇文章主要介紹了Golang使用os庫的ReadFile()讀文件最佳實(shí)踐,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
golang使用map支持高并發(fā)的方法(1000萬次操作14ms)
這篇文章主要介紹了golang使用map支持高并發(fā)的方法(1000萬次操作14ms),本文給大家詳細(xì)講解,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
Sublime Text3安裝Go語言相關(guān)插件gosublime時(shí)搜不到gosublime的解決方法
本文主要介紹了Sublime Text3安裝Go語言相關(guān)插件gosublime時(shí)搜不到gosublime的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-01-01
重學(xué)Go語言之錯(cuò)誤處理與異常機(jī)制詳解
Go語言的開發(fā)者顯然覺得?try-catch被濫用了,因此?Go不支持使用?try-catch語句捕獲異常處理,那么,Go語言是如何定義和處理程序的異常呢,下面我們就來看看吧2023-08-08
Golang如何調(diào)用windows下的dll動(dòng)態(tài)庫中的函數(shù)
這篇文章主要介紹了Golang如何調(diào)用windows下的dll動(dòng)態(tài)庫中的函數(shù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
golang求連續(xù)子數(shù)組的最大和實(shí)例
這篇文章主要介紹了golang求連續(xù)子數(shù)組的最大和實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12

