最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go?基本數(shù)據(jù)類型與字符串相互轉(zhuǎn)換方法小結(jié)

 更新時(shí)間:2024年01月28日 09:29:56   作者:@子非魚  
這篇文章主要介紹了Go基本數(shù)據(jù)類型與字符串相互轉(zhuǎn)換,將string類型轉(zhuǎn)換成基本類型時(shí),必須確保string類型是有效的,文中補(bǔ)充介紹了Go基本數(shù)據(jù)類型和其字符串表示之間轉(zhuǎn)換,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下

Go 基本數(shù)據(jù)類型與字符串相互轉(zhuǎn)換

go語言中文文檔:

Go語言標(biāo)準(zhǔn)庫(kù)文檔中文版 | Go語言中文網(wǎng) | Golang中文社區(qū) | Golang中國(guó)Go語言文檔中文版,Go語言中文網(wǎng),中國(guó) Golang 社區(qū),Go語言學(xué)習(xí)園地,致力于構(gòu)建完善的 Golang 中文社區(qū),Go語言愛好者的學(xué)習(xí)家園。

https://studygolang.com/pkgdoc

1.基本類型轉(zhuǎn)換成字符串(string)

fmt.Sprintf方法

fmt.Sprintf("%參數(shù)", 表達(dá)式)

注意:

  • 參數(shù)需要和表達(dá)式的數(shù)據(jù)類型相匹配
  • fmt.Sprintf()轉(zhuǎn)換后返回字符串結(jié)果
func main() {
    var num1 int = 99
    var num2 float64 = 23.55
    var b bool = true
    var mych byte = 'd'
    var st = string  // 空的string
    // 轉(zhuǎn)化成string
    str = fmt.Sprintf("%d", num1)
    str = fmt.Sprintf("%f", num2)
    str = fmt.Sprintf("%t", b)
    str = fmt.Sprintf("%c", mych)
}

strconv包

package main
import (
    "fmt"
    "strconv"
)
func main() {
    var num1 int = 99
    var num2 float64 = 23.55
    var b bool = true
    var mych byte = 'd'
    var st = string  // 空的string
    str = strconv.FormatInt(int64(num1), 10)  // 轉(zhuǎn)出10進(jìn)制字符串
    fmt.Printf("type: %T, str: %q\n", str, str)  // 格式化輸出
    // "f" 轉(zhuǎn)換成浮點(diǎn)型數(shù)據(jù)后的一種表示格式,詳見文檔
    // 10 精度
    // 64 轉(zhuǎn)換成float64
    str = strconv.FormatFloat(num2, "f", 10, 64)  // 
    str = strconv.FormatBool(b)  // 轉(zhuǎn)出布爾類型字符串
    // 將整型變量轉(zhuǎn)換成字符串,特例函數(shù)
    var num3 int = 333
    str = strconv.Itoa(num3)   // 這里num3為int型,如果不是需要先顯示轉(zhuǎn)換
}

2.字符串轉(zhuǎn)換成基本數(shù)據(jù)類型 strconv包

func main() {
    // 布爾類型轉(zhuǎn)換
    var str string = "true"
    var b bool 
    b, _ = strconv.ParseBool(str)
    // 整型轉(zhuǎn)換
    var str2 string = "232"
    var n int64
    var n2 int
    // 10 轉(zhuǎn)換成10進(jìn)制
    // 0、8、16、32、64 分別代表 int、int8、int16、int32、int64
    n, _ = strconv.ParseInt(str2, 10, 64)
    n2 = int(n)  // 獲取int類型的值,顯示轉(zhuǎn)換
    // 浮點(diǎn)型轉(zhuǎn)換
    var str3 string = "22.33"
    var f float64
    f, _ = strconv.ParseFloat(str3, 64)
}

注意:

將string類型轉(zhuǎn)換成基本類型時(shí),必須確保string類型是有效的;如果是無效值則會(huì)轉(zhuǎn)換成功,但是轉(zhuǎn)換后的值為基本類型的默認(rèn)值。例如不能把"ddd"轉(zhuǎn)換成一個(gè)整數(shù),如果這樣做,golang直接將其轉(zhuǎn)換成0

補(bǔ)充:

Go - 基本數(shù)據(jù)類型和其字符串表示之間轉(zhuǎn)換

1. 基本數(shù)據(jù)類型和其字符串表示之間轉(zhuǎn)換

基本類型的值,都有一個(gè)字符串表示,如數(shù)字類型值1 字符串表示為 "1",字符的編碼為Unicode或者UTF-8,數(shù)字的編碼是 int,底層存儲(chǔ)的數(shù)據(jù)格式本質(zhì)上不一樣,基本類型的轉(zhuǎn)換本質(zhì)上只是文法語義上的轉(zhuǎn)化

1.1 Go 語言基本類型

  • 整數(shù) : 有符號(hào)int int8 int16 int32 int64 無符號(hào): uint uint8 uint16 uint32 uint64
  • 小數(shù):float32 flat63
  • 字符串: string

1.2 轉(zhuǎn)換過程中可能得錯(cuò)誤

基本數(shù)據(jù)類型到字符串表示的轉(zhuǎn)換,不會(huì)出錯(cuò),但字符表示到基本類型的轉(zhuǎn)換可能會(huì)有以下錯(cuò)誤

  • 超出目標(biāo)類型的表示范圍
package main
import (
	"fmt"
	"strconv"
)
func main() {
	numStr := "400"
	// 400 數(shù)字值已經(jīng)超出int8(-128, 127)類型表示的范圍
	num, err := strconv.ParseInt(numStr, 10, 8)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("conv result:", num)
}
// 輸出:strconv.ParseInt: parsing "400": value out of range
  • 不符合目標(biāo)類型語法
package main
import (
	"fmt"
	"strconv"
)
func main() {
	numStr := "xx"
	// xx字符串值無法表示為對(duì)應(yīng)的整數(shù)值
	num, err := strconv.ParseInt(numStr, 10, 8)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("conv result:", num)
}
// 輸出:strconv.ParseInt: parsing "400": value out of range

2. 轉(zhuǎn)換

  • 字符串與帶引號(hào)之間轉(zhuǎn)化
package main
import (
	"fmt"
	"strconv"
)
func main() {
	name := "dream_fish n"
	// 添加上引號(hào)
	fmt.Println("result:", strconv.Quote(name))
	// 去除引號(hào)
	school := `"University"`
	school_, err := strconv.Unquote(school)
	if err != nil {
		fmt.Println("err:", err)
		return
	}
	fmt.Println("result:", school_)
}
  • 字符串與布爾類型之間的轉(zhuǎn)換

字符串轉(zhuǎn)bool類型

package main
import (
	"fmt"
	"strconv"
)
func main() {
	// 包含所有可以轉(zhuǎn)bool類型的值
	boolStringValues := []string{"1", "0", "t", "f", "true", "false", "True", "False"}
	// 進(jìn)行轉(zhuǎn)換
	for _, b := range boolStringValues {
		result, err := strconv.ParseBool(b)
		if err != nil {
			fmt.Printf("parse value: %s err:%s\n", b, err)
			continue
		}
		fmt.Printf("parse value: %s err:%s\n", b, result)
	}
}

bool類型轉(zhuǎn)字符串

package main
import (
	"fmt"
	"strconv"
)
func main() {
	// 包含布爾類型的值
	boolValues := []bool{false, true}
	// 進(jìn)行轉(zhuǎn)換
	for _, b := range boolValues {
		result := strconv.Quote(strconv.FormatBool(b))
		fmt.Printf("format value: %t err:%s\n", b, result)
	}
}
  • 數(shù)值與字符串之間的轉(zhuǎn)換

字符串轉(zhuǎn)數(shù)值

package main
import (
	"fmt"
	"strconv"
)
func main() {
	// 轉(zhuǎn)換為 int8類型
	int8String := "122"
	// 第一個(gè)參數(shù)是需要轉(zhuǎn)換的字符串,第二個(gè)參數(shù)是int類型的進(jìn)制,第三個(gè)參數(shù)是bit位數(shù)
	intNum, err := strconv.ParseInt(int8String, 10, 8)
	if err != nil {
		fmt.Println("err:", err)
	}
	fmt.Println("int8 num:", intNum)
	// 字符串正整數(shù)
	uintNum, err := strconv.ParseUint(int8String, 10, 8)
	if err != nil {
		fmt.Println("err:", err)
	}
	fmt.Println("uint8 num:", uintNum)
	// 字符串轉(zhuǎn)浮點(diǎn)數(shù)
	floatNumStr := "67.9"
	floatNum, err := strconv.ParseFloat(floatNumStr, 64)
	if err != nil {
		fmt.Println("err:", err)
	}
	fmt.Println("float64 num:", floatNum)
}

數(shù)值轉(zhuǎn)字符串

  • strconv包的Format系列方式
package main
import (
	"fmt"
	"strconv"
)
func main() {
	// 整肅轉(zhuǎn)字符串
	intNum := int64(8)
	fmt.Printf("%s\n", strconv.FormatInt(intNum, 10))
	// 浮點(diǎn)數(shù)轉(zhuǎn)字符串
	result := strconv.FormatFloat(88.9, 'f', 2, 64)
	fmt.Println("float to str:", result)
	// bool類型轉(zhuǎn)字符串
	fmt.Println("bool to str:", strconv.FormatBool(true))
	// 無符號(hào)整肅
	fmt.Println("uint to str", strconv.FormatUint(111, 10))
}
  • fmtSprint系列方式
package main
import (
	"fmt"
)
func main() {
	// 整肅轉(zhuǎn)字符串
	intValue := int64(8)
	boolValue := true
	floatValue := 44.2
	uintValue := 33
	result := fmt.Sprintf("int: %d, bool: %t, float: %f, unit: %d", intValue, boolValue, floatValue, uintValue)
	fmt.Printf(result)
}
  • strconv包的AtoiItoa方法,其實(shí)是 ParseInt(s, 10, 0) FormatInt(i, 10)的簡(jiǎn)寫
package main
import (
	"fmt"
	"strconv"
)
func main() {
	// int類型值轉(zhuǎn)換為字符串
	result := strconv.Itoa(100)
	fmt.Println(result)
	// 字符串值換換為int類型的值
	intString := "200"
	intValue, err := strconv.Atoi(intString)
	if err != nil {
		panic(err)
	}
	fmt.Println(intValue)
}

3. Append系方法

添加轉(zhuǎn)成基本類型轉(zhuǎn)換成字符串表示的

package main
import (
	"fmt"
	"strconv"
)
func main() {
	// 基礎(chǔ)數(shù)據(jù)類型
	intValue := int64(100)
	boolValue := true
	floatValue := 5.4
	buf := []byte("result:")
	resultValue := strconv.AppendFloat(buf, floatValue, 'f', 2, 64)
	fmt.Println(string(resultValue))
	resultValue = strconv.AppendInt(buf, intValue, 10)
	fmt.Println(string(resultValue))
	resultValue = strconv.AppendBool(buf, boolValue)
	fmt.Println(string(resultValue))
}

4. 總結(jié)

  • Parse系列方法,將字符串表示嘗試轉(zhuǎn)換為基礎(chǔ)類型,Formation系列方法將基本類型轉(zhuǎn)換為字符串表示,Append方法是一個(gè)將基本類型的字符串表示添加到字節(jié)切片的快捷方式

到此這篇關(guān)于Go 基本數(shù)據(jù)類型與字符串相互轉(zhuǎn)換方法小結(jié)的文章就介紹到這了,更多相關(guān)go基本數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 將Go項(xiàng)目發(fā)布到Go官方倉(cāng)庫(kù)的完整流程

    將Go項(xiàng)目發(fā)布到Go官方倉(cāng)庫(kù)的完整流程

    本文詳細(xì)介紹了如何將Go項(xiàng)目發(fā)布到Go官方倉(cāng)庫(kù)(通過GoModuleProxy),包括準(zhǔn)備工作、項(xiàng)目結(jié)構(gòu)設(shè)計(jì)、Go模塊初始化、代碼質(zhì)量保障、提交到代碼托管平臺(tái)、發(fā)布版本、使用GoModuleProxy、維護(hù)和更新等內(nèi)容,幫助開發(fā)者輕松分享自己的技術(shù)成果,需要的朋友可以參考下
    2026-05-05
  • Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理分析

    Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理分析

    這篇文章主要介紹了Golang?HTTP服務(wù)超時(shí)控制實(shí)現(xiàn)原理,HTTP服務(wù)的超時(shí)控制是保障服務(wù)高可用性的重要措施之一,由于HTTP服務(wù)可能會(huì)遇到網(wǎng)絡(luò)延遲,資源瓶頸等問題,因此需要對(duì)請(qǐng)求進(jìn)行超時(shí)控制,以避免服務(wù)雪崩等問題,需要的朋友可以參考下
    2023-05-05
  • golang中常見的logrus日志庫(kù)

    golang中常見的logrus日志庫(kù)

    這篇文章主要介紹了golang中常見的logrus日志庫(kù)的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Golang使用gin模板渲染base64圖片出現(xiàn)#ZgotmplZ的解決辦法

    Golang使用gin模板渲染base64圖片出現(xiàn)#ZgotmplZ的解決辦法

    這篇文章主要介紹了Golang使用gin模板渲染base64圖片出現(xiàn)#ZgotmplZ的的場(chǎng)景復(fù)現(xiàn)和解決辦法,文中通過代碼示例講解的非常詳細(xì),對(duì)大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • go基于Gin框架的HTTP接口限速實(shí)踐

    go基于Gin框架的HTTP接口限速實(shí)踐

    HTTP接口在各個(gè)業(yè)務(wù)模塊之間扮演著重要的角色,本文主要介紹了go基于Gin框架的HTTP接口限速實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 讓goland支持proto文件類型的實(shí)現(xiàn)

    讓goland支持proto文件類型的實(shí)現(xiàn)

    這篇文章主要介紹了讓goland支持proto文件類型的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang單元測(cè)試中的技巧分享

    Golang單元測(cè)試中的技巧分享

    這篇文章主要為大家詳細(xì)介紹了Golang進(jìn)行單元測(cè)試時(shí)的一些技巧和科技,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • Go語言創(chuàng)建結(jié)構(gòu)體實(shí)例對(duì)象的幾種常用方式

    Go語言創(chuàng)建結(jié)構(gòu)體實(shí)例對(duì)象的幾種常用方式

    在Go語言中,創(chuàng)建結(jié)構(gòu)體實(shí)例的幾種方式有本質(zhì)區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • Go語言基礎(chǔ)設(shè)計(jì)模式之策略模式示例詳解

    Go語言基礎(chǔ)設(shè)計(jì)模式之策略模式示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)設(shè)計(jì)模式之策略模式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • Go實(shí)現(xiàn)文件上傳和下載

    Go實(shí)現(xiàn)文件上傳和下載

    這篇文章主要為大家詳細(xì)介紹了Go實(shí)現(xiàn)文件上傳和下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評(píng)論

锡林浩特市| 孝感市| 米脂县| 登封市| 佛冈县| 巴青县| 桓台县| 保亭| 宁明县| 鹤岗市| 英德市| 临邑县| 马尔康县| 祁门县| 蓝山县| 大足县| 平罗县| 宜兰市| 赤城县| 乌拉特前旗| 昆山市| 楚雄市| 北辰区| 鹤峰县| 寻乌县| 甘孜县| 论坛| 郯城县| 什邡市| 乌兰察布市| 禄丰县| 郸城县| 肥西县| 开化县| 庄河市| 开远市| 宁都县| 当涂县| 荣昌县| 义马市| 武山县|