淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢
在許多語言中,你可以輕松地將任何數(shù)據(jù)類型轉(zhuǎn)換為字符串,只需將其與字符串連接,或者使用類型轉(zhuǎn)換表達式即可。但是,如果你在Go中嘗試執(zhí)行似乎很明顯的操作(例如將int轉(zhuǎn)換為字符串),你不太可能獲得預(yù)期的效果。
比如下面:
string(120)
你期望返回的結(jié)果是什么?如果你有使用其他編程語言的經(jīng)驗,那么大多數(shù)人的猜測是“ 123”。相反,在Go中上面的類型轉(zhuǎn)換會得到“ E”之類的值,那根本不是我們想要的。因為string()會直接把字節(jié)或者數(shù)字轉(zhuǎn)換為字符的UTF-8表現(xiàn)形式。
所以在Go中將byte或者int類型的值轉(zhuǎn)換為數(shù)字的字符串表現(xiàn)形式的正確方法是使用strconv包中的方法,比如strconv.Itoa。
strconv.Itoa(120)// 返回"120"
下面的例子,可以試著把strconv.Itoa改成string看看得到什么輸出。
package main import ( "fmt" "strings" "strconv" ) type IPAddr [4]byte func (p IPAddr) String() string { var ipParts []string for _, item := range p { ipParts = append(ipParts, strconv.Itoa(int(item))) } return strings.Join(ipParts, ".") } func main() { hosts := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for name, ip := range hosts { fmt.Printf("%v: %v\n", name, ip) } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Go語言基于viper實現(xiàn)apollo多實例快速
viper是適用于go應(yīng)用程序的配置解決方案,這款配置管理神器,支持多種類型、開箱即用、極易上手。本文主要介紹了如何基于viper實現(xiàn)apollo多實例快速接入,感興趣的可以了解一下2023-01-01GoLang日志監(jiān)控系統(tǒng)實現(xiàn)
這篇文章主要介紹了GoLang日志監(jiān)控系統(tǒng)的實現(xiàn)流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12Golang程序中使用Prometheus的client_golang庫
這篇文章主要介紹了Golang程序中使用Prometheus的client_golang庫,Prometheus 是一個開源的監(jiān)控和警報工具包,用于收集和處理應(yīng)用程序和系統(tǒng)的指標(biāo)數(shù)據(jù)。Prometheus 提供了多種客戶端庫,可以輕松地集成到各種編程語言中2023-04-04基于Go?goroutine實現(xiàn)一個簡單的聊天服務(wù)
對于聊天服務(wù),想必大家都不會陌生,因為在我們的生活中經(jīng)常會用到,本文我們用?Go?并發(fā)來實現(xiàn)一個聊天服務(wù)器,這個程序可以讓一些用戶通過服務(wù)器向其它所有用戶廣播文本消息,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-06-06Go?WEB框架使用攔截器驗證用戶登錄狀態(tài)實現(xiàn)
這篇文章主要為大家介紹了Go?WEB框架使用攔截器驗證用戶登錄狀態(tài)實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07