Lixv

Lixv

Go strconv包詳解

strconv 包也是我們在 Go 語言中經常會使用到的包,通常用於在字符串與基本數據類型之間進行轉換。它提供了一系列函數來處理字符串的解析(parsing)和格式化(formatting)操作。

簡要介紹#

下面是 strconv 包中一些常用的函數和其功能的簡要介紹:

  1. strconv.Itoa:將整數轉換為字符串。它接受一個整數值,並返回表示該整數的字符串形式。

    示例:

    import (
        "fmt"
        "strconv"
    )
    
    func main() {
        num := 42
        str := strconv.Itoa(num)
        fmt.Println(str) // 輸出: "42"
    }
    
  2. strconv.Atoi:將字符串轉換為整數。它接受一個表示整數的字符串,並返回對應的整數值。如果轉換失敗,它會返回錯誤信息。

    示例:

    import (
        "fmt"
        "strconv"
    )
    
    func main() {
        str := "42"
        num, err := strconv.Atoi(str)
        if err != nil {
            fmt.Println("轉換失敗:", err)
            return
        }
        fmt.Println(num) // 輸出: 42
    }
    
  3. strconv.ParseFloat:將字符串轉換為浮點數。接受一個表示浮點數的字符串、指定的位數(32 或 64)以及對應位數的浮點數類型,並返回對應的浮點數值。如果轉換失敗,它會返回錯誤信息。

    示例:

    import (
        "fmt"
        "strconv"
    )
    
    func main() {
        str := "3.14"
        num, err := strconv.ParseFloat(str, 64)
        if err != nil {
            fmt.Println("轉換失敗:", err)
            return
        }
        fmt.Println(num) // 輸出: 3.14
    }
    
  4. strconv.FormatInt / strconv.FormatFloat:將整數或浮點數轉換為字符串。接受一個整數或浮點數值,以及指定的基數(如 10 進制、16 進制等),並返回對應的字符串形式。

    示例:

    import (
        "fmt"
        "strconv"
    )
    
    func main() {
        num := 42
        str := strconv.FormatInt(int64(num), 10)
        fmt.Println(str) // 輸出: "42"
    
        pi := 3.14159
        str = strconv.FormatFloat(pi, 'f', 2, 64)
        fmt.Println(str) // 輸出: "3.14"
    }
    

這些只是 strconv 包提供的一些常用函數,它還提供了其他函數用於更複雜的轉換操作,比如處理布爾值、Unicode 字符等。

AppendXXX 簡要介紹#

AppendXXX 函數用於將基本類型的值追加到字節切片([]byte)中。

  1. AppendBool 函數

    func AppendBool(dst []byte, b bool) []byte

    AppendBool 函數將布爾值 b 轉換為字符串表示形式,並將結果追加到字節切片 dst 中。返回值是追加後的字節切片。

    示例:

    var dst []byte
    dst = strconv.AppendBool(dst, true)
    fmt.Println(string(dst)) // 輸出: "true"
    
  2. AppendFloat 函數

    func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte

    AppendFloat 函數將浮點數 f 轉換為字符串表示形式,並將結果追加到字節切片 dst 中。fmt 參數指定格式,prec 參數指定精度,bitSize 參數指定浮點數位數。

    示例:

    var dst []byte
    dst = strconv.AppendFloat(dst, 3.14159, 'f', 4, 64)
    fmt.Println(string(dst)) // 輸出: "3.1416"
    

請注意,這些 AppendXXX 函數用於將字符串形式的基本類型值追加到字節切片中,而不是在現有的字節切片中修改值。這些函數通常在需要將基本類型值轉換為字符串並將其添加到字節切片中的情況下使用。

QuoteXXX 簡要介紹#

QuoteXXX 函數是 strconv 包中的一組函數,用於將基本類型的值轉換為其在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。

以下是 QuoteXXX 函數的作用和示例:

  1. Quote 函數

    func Quote(s string) string

    Quote 函數將字符串 s 轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。它將特殊字符進行轉義,使字符串可以直接在源代碼中使用。

    示例用法:

    str := `Hello, "Gopher"`
    quoted := strconv.Quote(str)
    fmt.Println(quoted) // 輸出: "Hello, \"Gopher\""
    
  2. QuoteRune 函數

    func QuoteRune(r rune) string

    QuoteRune 函數將 Unicode 字符 r 轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的字符串。

    示例用法:

    rune := ''
    quoted := strconv.QuoteRune(rune)
    fmt.Println(quoted) // 輸出: "'♥'"
    
  3. QuoteRuneToASCII 函數

    func QuoteRuneToASCII(r rune) string

    QuoteRuneToASCII 函數將 Unicode 字符 r 轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的 ASCII 字符串。它將非 ASCII 字符進行轉義。

    示例用法:

    rune := ''
    quoted := strconv.QuoteRuneToASCII(rune)
    fmt.Println(quoted) // 輸出: "'\\u2665'"
    
  4. QuoteRuneToGraphic 函數

    func QuoteRuneToGraphic(r rune) string

    QuoteRuneToGraphic 函數將 Unicode 字符 r 轉換為它在 Go 語言中的源代碼表示形式,並返回該表示形式的可打印字符的字符串。它將非圖形字符進行轉義。

    示例用法:

    rune := '\u2022' // 中文的"點"字符
    quoted := strconv.QuoteRuneToGraphic(rune)
    fmt.Println(quoted) // 輸出: "'•'"
    

這些 QuoteXXX 函數可以用於生成源代碼字符串的表示形式,特別是在需要將字符串或字符嵌入到源代碼中時,可以確保它們的表示形式是正確的,並且不會導致語法錯誤。

總結#

strconv 包是 Go 標準庫中的一個包,用於進行字符串和基本數據類型之間的相互轉換。它提供了一系列的函數,包括將基本類型轉換為字符串的函數,以及將字符串轉換為基本類型的函數。

該包的常用函數和功能包括:

  1. Parse 系列函數:用於將字符串解析為基本類型的值,例如 ParseBoolParseIntParseFloat 等函數。

  2. Format 系列函數:用於將基本類型的值格式化為字符串的表示形式,例如 FormatBoolFormatIntFormatFloat 等函數。

  3. Append 系列函數:用於將基本類型的值追加到字節切片中,例如 AppendBoolAppendIntAppendFloat 等函數。

  4. Quote 系列函數:用於將基本類型的值轉換為其在 Go 語言中的源代碼表示形式的字符串,例如 QuoteQuoteRuneQuoteRuneToASCII 等函數。

  5. 字符串轉換函數:包括 AtoiItoaParseUintFormatUint 等函數,用於處理字符串和整數類型之間的轉換。

  6. 字符串和浮點數類型之間的轉換:包括 AtofFormatFloatParseFloat 等函數,用於處理字符串和浮點數類型之間的轉換。

strconv 包提供了靈活且簡便的方法來處理字符串和基本數據類型之間的轉換,使得我們可以方便地進行數據格式轉換和處理。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。