欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2024年01月28日 08:19:23   作者:夢_魚  
這篇文章主要為大家詳細(xì)介紹了Go中基本數(shù)據(jù)類型和字符串表示之間轉(zhuǎn)換的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

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

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

1.1 Go 語言基本類型

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

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

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

超出目標(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字符串值無法表示為對應(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)換

字符串與帶引號之間轉(zhuǎn)化

package main

import (
	"fmt"
	"strconv"
)

func main() {
	name := "dream_fish n"
	// 添加上引號
	fmt.Println("result:", strconv.Quote(name))

	// 去除引號
	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"
	// 第一個參數(shù)是需要轉(zhuǎn)換的字符串,第二個參數(shù)是int類型的進(jìn)制,第三個參數(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))

	// 無符號整肅
	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)的簡寫

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方法是一個將基本類型的字符串表示添加到字節(jié)切片的快捷方式

到此這篇關(guān)于Go中基本數(shù)據(jù)類型和字符串表示之間轉(zhuǎn)換詳解的文章就介紹到這了,更多相關(guān)Go數(shù)據(jù)類型和字符串轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang使用切片實(shí)現(xiàn)單鏈表的示例代碼

    Golang使用切片實(shí)現(xiàn)單鏈表的示例代碼

    單鏈表(Single?Linked?List)是鏈表數(shù)據(jù)結(jié)構(gòu)的一種實(shí)現(xiàn)方式,它包含一系列節(jié)點(diǎn)(Node),每個節(jié)點(diǎn)都包含一個數(shù)據(jù)域和一個指向下一個節(jié)點(diǎn)的指針,本文給大家介紹了Golang使用切片實(shí)現(xiàn)單鏈表的操作,需要的朋友可以參考下
    2024-05-05
  • Golang排列組合算法問題之全排列實(shí)現(xiàn)方法

    Golang排列組合算法問題之全排列實(shí)現(xiàn)方法

    這篇文章主要介紹了Golang排列組合算法問題之全排列實(shí)現(xiàn)方法,涉及Go語言針對字符串的遍歷及排列組合相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • Golang token的生成和解析詳解

    Golang token的生成和解析詳解

    這篇文章主要給大家介紹了Golang token的生成和解析,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • 教你一招完美解決vscode安裝go插件失敗問題

    教你一招完美解決vscode安裝go插件失敗問題

    VSCode是我們開發(fā)go程序的常用工具,但是安裝VSCode成功后,創(chuàng)建一個.go文件居然提示錯誤了,所以下面下面這篇文章主要給大家介紹了如何通過一招完美解決vscode安裝go插件失敗問題的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • golang interface指針實(shí)現(xiàn)示例

    golang interface指針實(shí)現(xiàn)示例

    本文主要介紹了golang interface指針實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Gin框架中異步任務(wù)的實(shí)現(xiàn)

    Gin框架中異步任務(wù)的實(shí)現(xiàn)

    Gin框架中的異步任務(wù)處理是指在Web應(yīng)用中以非阻塞的方式處理耗時操作或后臺任務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Go語言字典(map)用法實(shí)例分析【創(chuàng)建,填充,遍歷,查找,修改,刪除】

    Go語言字典(map)用法實(shí)例分析【創(chuàng)建,填充,遍歷,查找,修改,刪除】

    這篇文章主要介紹了Go語言字典(map)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Go語言字典的創(chuàng)建、填充、遍歷、查找、修改、刪除等操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • Go語言zip文件的讀寫操作

    Go語言zip文件的讀寫操作

    本文主要介紹了Go語言zip文件的讀寫操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Golang使用archive/zip包實(shí)現(xiàn)ZIP壓縮與解壓

    Golang使用archive/zip包實(shí)現(xiàn)ZIP壓縮與解壓

    Golang?中的?archive/zip?包用于處理?ZIP?格式的壓縮文件,提供了一系列用于創(chuàng)建、讀取和解壓縮?ZIP?格式文件的函數(shù)和類型,使用起來非常方便,下面就跟隨小編一起了解一下具體使用方法吧
    2023-08-08
  • victoriaMetrics庫布隆過濾器初始化及使用詳解

    victoriaMetrics庫布隆過濾器初始化及使用詳解

    這篇文章主要為大家介紹了victoriaMetrics庫布隆過濾器初始化及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04

最新評論