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

Go strconv包實現(xiàn)字符串和基本數(shù)據(jù)類型轉換的實例詳解

 更新時間:2024年09月30日 09:40:56   作者:景天科技苑  
在Go語言(Golang)的編程實踐中,strconv包是一個非常重要的標準庫,它提供了在基本數(shù)據(jù)類型(如整型、浮點型、布爾型)和字符串之間的轉換功能,本文給大家介紹了關于Go語言字符串轉換strconv,需要的朋友可以參考下

在Go語言(Golang)的編程實踐中,strconv包是一個非常重要的標準庫,它提供了在基本數(shù)據(jù)類型(如整型、浮點型、布爾型)和字符串之間的轉換功能。

無論是在處理用戶輸入、文件讀寫、網(wǎng)絡傳輸還是其他需要數(shù)據(jù)格式轉換的場景中,strconv包都扮演著至關重要的角色。

1. strconv包概述

strconv是兩個單詞的縮寫。string convert = strconv
strconv包位于Go語言的標準庫中,它提供了一系列用于字符串和基本數(shù)據(jù)類型之間轉換的函數(shù)。這些函數(shù)主要包括以下幾種類型:

將基本數(shù)據(jù)類型轉換為字符串的函數(shù),如Itoa、FormatInt、FormatFloat、FormatBool等。
將字符串解析為基本數(shù)據(jù)類型的函數(shù),如Atoi、ParseInt、ParseFloat、ParseBool等。
附加到已存在字節(jié)數(shù)組的函數(shù),如AppendInt、AppendFloat、AppendBool等。
其他輔助函數(shù),如IsPrint、IsGraphic、Quote、Unquote等。
將字符串轉換為其他基礎類型的過程叫做解析parse,其他基礎類型轉換為字符串的過程成為格式化format

2. 整數(shù)與字符串的轉換

2.1 整數(shù)轉字符串

在Go語言中,將整數(shù)轉換為字符串是一個常見的需求。strconv包中的Itoa函數(shù)和FormatInt函數(shù)都可以實現(xiàn)這一功能。

示例1:使用Itoa函數(shù)

package main

import (
    "fmt"
    "strconv"
)

//整形轉字符串
func main() {
    intNum := 42
    //整形轉字符串方法strconv.Itoa
    strFromInt := strconv.Itoa(intNum)
    fmt.Printf("整型轉換為字符串: %s\n", strFromInt)
    fmt.Printf("整型轉換為字符串數(shù)據(jù)類型: %T\n", strFromInt)
}

在這里插入圖片描述

在這個例子中,Itoa函數(shù)將整數(shù)42轉換為字符串"42"。

示例2:使用FormatInt函數(shù)

對于大整數(shù)或需要指定進制的無符號整數(shù)場景,可以使用FormatInt函數(shù)。
func FormatInt(i int64, base int) string
i 表示需要轉換的整數(shù),base 表示源數(shù)字要轉換后的進制數(shù),最終返回的是 i 的字符串形式

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    bigIntValue := int64(9223372036854775807) // MaxInt64  
    bigIntStr := strconv.FormatInt(bigIntValue, 10)  
    fmt.Println("大整數(shù)轉字符串:", bigIntStr)  
  
    // 轉換為二進制字符串  
    binaryStr := strconv.FormatInt(bigIntValue, 2)  
    fmt.Println("大整數(shù)轉二進制字符串:", binaryStr)  
}

在這里插入圖片描述

2.2 字符串轉整數(shù)

將字符串轉換為整數(shù),可以使用Atoi函數(shù)或ParseInt函數(shù)。

示例1:使用Atoi函數(shù)
注意,字符串轉整形,需要進行錯誤捕獲
func Atoi(s string) (int, error)

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    str := "123"  
    intFromStr, err := strconv.Atoi(str)  
    if err != nil {  
        fmt.Println("轉換錯誤:", err)  
        return  
    }  
    fmt.Printf("字符串轉換為整型: %d\n", intFromStr)  
}

在這里插入圖片描述

Atoi函數(shù)將字符串轉換為int類型。注意,如果字符串不能被解析為整數(shù),Atoi會返回錯誤。

在這里插入圖片描述

示例2:使用ParseInt函數(shù)
ParseInt函數(shù)比Atoi更靈活,允許指定基數(shù)(進制)和位大小。
func ParseInt(s string, base int, bitSize int) (i int64, err error)
s string表示需要轉換的字符串
base int 表示需要轉換的數(shù)據(jù)的進制
bitSize int 表示轉換后的整數(shù)為多少位int類型
返回一個int64整形和一個error

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    hexStr := "FF"  
    hexValue, err := strconv.ParseInt(hexStr, 16, 64)  
    if err != nil {  
        fmt.Println("轉換錯誤:", err)  
        return  
    }  
    fmt.Printf("十六進制字符串轉整數(shù): %d\n", hexValue)  
}

在這里插入圖片描述

3. 浮點數(shù)與字符串的轉換

3.1 浮點數(shù)轉字符串

將浮點數(shù)轉換為字符串,可以使用FormatFloat函數(shù)。
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
f:要格式化的浮點數(shù)
fmt:格式標記,'b’表示二進制,'e’表示科學計數(shù)法,'f’表示十進制無指數(shù),'g’表示最少計數(shù)法表示
prec:表示精度,對于’f’和’g’格式,代表除小數(shù)點以外的位數(shù)。也可以是-1,表示根據(jù)浮點數(shù)的小數(shù)位數(shù)自動確定保留的位數(shù)。
bitsize:浮點數(shù)類型,32表示float32,64表示float64

示例

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    floatValue := 3.14159  
    floatStr := strconv.FormatFloat(floatValue, 'f', -1, 64)  
    fmt.Println("浮點數(shù)轉字符串:", floatStr)  
  
    // 保留兩位小數(shù)  
    preciseFloatStr := strconv.FormatFloat(floatValue, 'f', 2, 64)  
    fmt.Println("精確到兩位小數(shù)的浮點數(shù)轉字符串:", preciseFloatStr)  
}

在這里插入圖片描述

3.2 字符串轉浮點數(shù)

將字符串轉換為浮點數(shù),可以使用ParseFloat函數(shù)。
func ParseFloat(s string, bitSize int) (float64, error)

將字符串解析為浮點數(shù),如果 s 符合語法規(guī)則,會返回一個最為接近 s 表示值得浮點數(shù)(IEEE754 規(guī)范舍入)
bitSize 指定解析結果的浮點數(shù)類型,32 是 float32,64 是 float64
返回值 err 是 *NumErr 類型的,語法有誤時,err.Error = ErrSyntax;結果超出表示范圍時,返回值 f 為 ±Inf,err.Error= ErrRange

示例

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    str := "3.14"  
    floatValue, err := strconv.ParseFloat(str, 64)  
    if err != nil {  
        fmt.Println("轉換錯誤:", err)  
        return  
    }  
    fmt.Println("字符串轉浮點數(shù):", floatValue)  
}

在這里插入圖片描述

4. 布爾值與字符串的轉換

4.1 布爾值轉字符串

將布爾值轉換為字符串時,可以使用strconv.FormatBool函數(shù)。該函數(shù)將true轉換為字符串"true",將false轉換為字符串"false"。

示例

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    boolValue := true  
    boolStr := strconv.FormatBool(boolValue)  
    fmt.Println("布爾值轉字符串:", boolStr)  
    fmt.Printf("布爾值轉字符串數(shù)據(jù)類型:%T\n", boolStr)

}

在這里插入圖片描述

4.2 字符串轉布爾值

將字符串轉換為布爾值時,可以使用strconv.ParseBool函數(shù)。
該函數(shù)會嘗試將字符串解析為布爾值,并返回解析后的布爾值和可能發(fā)生的錯誤。有效的布爾值字符串為"true"和"false"(不區(qū)分大小寫)。

示例代碼:

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    //字符串轉換為布爾值,里面的布爾值不區(qū)分大小寫

    str := "true"  
    boolValue, err := strconv.ParseBool(str)  
    if err != nil {  
        panic(err)  
    }  
    fmt.Println("字符串轉布爾值:", boolValue)  
    fmt.Printf("字符串轉布爾值數(shù)據(jù)類型:%T\n", boolValue)

}

在這里插入圖片描述

5. strconv包的其他功能

5.1 Append系列函數(shù)

strconv包還提供了Append…系列函數(shù),這些函數(shù)可以將基本數(shù)據(jù)類型追加到已存在的字節(jié)數(shù)組中,而無需重新分配整個數(shù)組。這在處理大量數(shù)據(jù)時非常有用,可以顯著提高性能。

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    // 追加整數(shù)到字節(jié)數(shù)組  
    num1 := 123  
    byteSlice := []byte("Number: ")  
    byteSlice = strconv.AppendInt(byteSlice, int64(num1), 10)  
    fmt.Println("追加整數(shù):", string(byteSlice))  
  
    // 追加布爾值到字節(jié)數(shù)組  
    boolVal := true  
    byteSlice = []byte("Bool: ")  
    byteSlice = strconv.AppendBool(byteSlice, boolVal)  
    fmt.Println("追加布爾值:", string(byteSlice))  
  
    // 追加浮點數(shù)到字節(jié)數(shù)組  
    floatVal := 3.14  
    byteSlice = []byte("Float: ")  
    byteSlice = strconv.AppendFloat(byteSlice, floatVal, 'f', -1, 64)  
    fmt.Println("追加浮點數(shù):", string(byteSlice))  
}

在這里插入圖片描述

5.2 輔助函數(shù)

strconv包還包含一些輔助函數(shù),如IsPrint、IsGraphic、Quote和Unquote等,它們提供了額外的功能,如檢查字符的可打印性、將字符串轉換為帶引號和轉義字符的字符串字面值等。
strconv.Quote 函數(shù)用于將字符串轉換為雙引號括起來的、轉義了特殊字符的Go字符串字面量。而 strconv.Unquote 函數(shù)則執(zhí)行相反的操作,即解析一個被雙引號括起來、可能包含轉義字符的字符串。

示例

package main  
  
import (  
    "fmt"  
    "strconv"  
)  
  
func main() {  
    chars := []rune{'H', 'e', 'l', '\n', '?', 127}  
    for _, char := range chars {  
        fmt.Printf("Character: %c, IsPrint: %v\n", char, strconv.IsPrint(char))  
        fmt.Printf("Character: %c, IsGraphic: %v\n", char, strconv.IsGraphic(char))  
    }  
  
    str := `路多辛的,"所思所想"!。`  
    quoted := strconv.Quote(str)  
    fmt.Println("Quoted: ", quoted)  
  
    unquoted, err := strconv.Unquote(quoted)  
    if err != nil {  
        panic(err)  
    }  
    fmt.Println("Unquoted: ", unquoted)  
}

在這里插入圖片描述

注意事項

在使用Parse…系列函數(shù)時,一定要檢查返回的錯誤值,以確保轉換成功。
對于大整數(shù)或無符號整數(shù),應使用FormatInt和ParseInt函數(shù),并指定適當?shù)幕鶖?shù)和位數(shù)。
在處理浮點數(shù)時,注意精度和格式的控制。
strconv包中的函數(shù)主要用于基本類型和字符串之間的轉換,對于復雜數(shù)據(jù)結構的序列化和反序列化,應考慮使用encoding/json、encoding/xml等包。

6. 總結

strconv包是Go語言中處理字符串和基本數(shù)據(jù)類型轉換的重要工具。
通過本文,我們詳細學習了strconv包中整數(shù)、浮點數(shù)、布爾值與字符串之間的轉換方法,以及進制轉換、追加到字節(jié)數(shù)組、引號處理和字符可打印性判斷等高級功能。
這些功能在數(shù)據(jù)處理、網(wǎng)絡通信、日志記錄等多個方面都有廣泛應用。

以上就是Go語言字符串轉換strconv的實例詳解的詳細內容,更多關于Go字符串轉換strconv的資料請關注腳本之家其它相關文章!

相關文章

  • node-exporter被檢測出來pprof調試信息泄露漏洞問題

    node-exporter被檢測出來pprof調試信息泄露漏洞問題

    這篇文章主要介紹了node-exporter被檢測出來pprof調試信息泄露漏洞問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Golang驗證器之validator是使用詳解

    Golang驗證器之validator是使用詳解

    Validator是一個?Golang?的第三方庫,用于對數(shù)據(jù)進行校驗,常用于?API?的開發(fā)中,對客戶端發(fā)出的請求數(shù)據(jù)進行嚴格校驗,防止惡意請求。本文通過示例詳細講解了Validator的使用,需要的可以參考一下
    2022-08-08
  • 一文總結Go語言切片核心知識點和坑

    一文總結Go語言切片核心知識點和坑

    都說Go的切片用起來絲滑得很,Java中的List怎么用,切片就怎么用,作為曾經(jīng)的Java選手,因為切片的使用不得當,喜提缺陷若干,本文就給大家總結一下Go語言切片核心知識點和坑,需要的朋友可以參考下
    2023-06-06
  • 使用Go?http重試請求的示例

    使用Go?http重試請求的示例

    開發(fā)中對于http請求是經(jīng)常遇到,一般可能網(wǎng)絡延遲或接口返回超時,這篇文章主要介紹了使用Go?http重試請求的示例,需要的朋友可以參考下
    2022-08-08
  • 深入淺出Go語言:手把手教你高效生成與解析JSON數(shù)據(jù)

    深入淺出Go語言:手把手教你高效生成與解析JSON數(shù)據(jù)

    本文將帶你一步步走進Go語言的世界,教你如何高效生成與解析JSON數(shù)據(jù),無論你是初學者還是經(jīng)驗豐富的開發(fā)者,都能在本文中找到實用的技巧和靈感,本文內容簡潔明了,示例豐富,讓你在閱讀的過程中輕松掌握Go語言生成與解析JSON數(shù)據(jù)的技巧,需要的朋友可以參考下
    2024-02-02
  • 使用go module導入本地包的方法教程詳解

    使用go module導入本地包的方法教程詳解

    go module 將是Go語言默認的依賴管理工具。到今天 Go1.14 版本推出之后 Go modules 功能已經(jīng)被正式推薦在生產(chǎn)環(huán)境下使用了。本文重點給大家介紹如何使用 go module 導入本地包,感興趣的朋友一起看看吧
    2020-03-03
  • Golang開發(fā)中如何解決共享變量問題

    Golang開發(fā)中如何解決共享變量問題

    Go提供了傳統(tǒng)通過共享變量,也就是共享內存的方式來實現(xiàn)并發(fā)。這篇文章會介紹 Go提供的相關機制,對Golang共享變量相關知識感興趣的朋友一起看看吧
    2021-09-09
  • go語言fasthttp使用實例小結

    go語言fasthttp使用實例小結

    fasthttp?是一個使用?Go?語言開發(fā)的?HTTP?包,主打高性能,針對?HTTP?請求響應流程中的?hot?path?代碼進行了優(yōu)化,下面我們就來介紹go語言fasthttp使用實例小結,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Golang中文件目錄操作的實現(xiàn)步驟詳解

    Golang中文件目錄操作的實現(xiàn)步驟詳解

    在Golang中,文件目錄是指計算機文件系統(tǒng)中的文件夾或目錄。目錄是用于組織和存儲文件的一種方式,可以包含文件和其他子目錄,本文主要介紹了Golang中文件目錄操作的實現(xiàn)方法,需要的朋友可以參考下
    2023-05-05
  • 解決go mod私有倉庫拉取的問題

    解決go mod私有倉庫拉取的問題

    這篇文章主要介紹了解決go mod私有倉庫拉取的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論