golang使用strconv包string/int/int64類型轉換

Go不會對數據進行隱式的類型轉換,只能手動去執行轉換操作。

strconv包提供了簡單數據類型之間的類型轉換功能。

以下是常用的一些轉換函數:

將 int 類型轉成 string 類型: (Itoa)

num := 3311
str := strconv.Itoa(num)

fmt.Printf("--> 類型: %T, 值: %v \n", num, num) 
// 輸出結果: “--> 類型: string, 值: 3311”

fmt.Printf("--> 類型: %T, 值: %v \n", str, str) 
// 輸出結果: “--> 類型: string, 值: 3311”

將 int64 類型轉換成 string 類型: (FormatInt)

func FormatInt(i int64, base int) string

v := int64(-4235)

s10 := strconv.FormatInt(v, 10)
fmt.Printf("--> %T, %v\n", s10, s10)
// 輸出結果: string, -4235

將 string 類型轉成 int 類型 (Atoi)

Atoi: 將 string 類型轉成 int 類型

// Atoi: 將 string 類型轉成 int 類型
fmt.Println("---- Atoi -----")
num2 := "1012"
if s, err := strconv.Atoi(num2); err == nil {
    fmt.Printf("--> 類型: %T, 值: %v \n", s, s) 
    // 輸出結果: “--> 類型: int, 值: 1012”
}

將 string 類型轉換到 int64 類型:

將 string 類型轉換到 int64 類型

v32 := "-354634382"
if s, err := strconv.ParseInt(v32, 10, 32); err == nil {
    fmt.Printf("%T, %v\n", s, s) 
    // 輸出: int64, -354634382
}

v64 := "-3546343826724305832"
if s, err := strconv.ParseInt(v64, 10, 64); err == nil {
    fmt.Printf("%T, %v\n", s, s) 
    // 輸出: int64, -3546343826724305832
}

代碼實例

package main

import (
    "fmt"
    "strconv"
)

func main() {
    fmt.Println("--> Hello, World!");

    tips := "這裏是my類型轉換?"
    fmt.Println("--> tips: " + tips);

    // int 類型轉成 string 類型
    fmt.Println("---- Itoa -----")
    num := 3311
    str := strconv.Itoa(num)
    fmt.Printf("--> 類型: %T, 值: %v \n", num, num) 
    // 輸出結果: “--> 類型: string, 值: 3311”
    fmt.Printf("--> 類型: %T, 值: %v \n", str, str) 
    // 輸出結果: “--> 類型: string, 值: 3311”

    // Atoi: 將 string 類型轉成 int 類型
    fmt.Println("---- Atoi -----")
    num2 := "1012"
    if s, err := strconv.Atoi(num2); err == nil {
        fmt.Printf("--> 類型: %T, 值: %v \n", s, s) 
        // 輸出結果: “--> 類型: int, 值: 1012”
    }

    // ParseFloat: 將字符串轉換成浮點數
    fmt.Println("---- ParseFloat -----")
    v3 := "3.1415926535"
    if s, err := strconv.ParseFloat(v3, 32); err == nil {
        // 輸出結果: “--> 類型: float64, 值: 3.1415927410125732”
        fmt.Printf("--> 類型: %T, 值: %v \n", s, s) 
    }
    if s, err := strconv.ParseFloat(v3, 64); err == nil {
        // 輸出結果: “--> 類型: float64, 值: 3.1415926535”
        fmt.Printf("--> 類型: %T, 值: %v \n", s, s)
    } 

    // 特殊字符轉義
    fmt.Println("---- Quote -----")
    // there is a tab character inside the string literal
    s := strconv.Quote(`"Fran & \n \t Freddie's Diner   ☺"`) 
    // 輸出結果: “"\"Fran & \\n \\t Freddie's Diner\t☺\""”
    fmt.Println(s)
    // QuoteToASCII 將字符串轉換爲“雙引號”引起來的 ASCII 字符串
    fmt.Println(strconv.QuoteToASCII("to quote Shakespeare 引用莎士比亞的話"))

    // 特殊字符取消轉義
    fmt.Println("---- Unquote -----")
    s1 := "`Hello   世界!`"             // 解析反引號字符串
    s2 := `"Hello\t\u4e16\u754c\uff01"` // 解析雙引號字符串
    s3 := `"to quote Shakespeare \u5f15\u7528\u838e\u58eb\u6bd4\u4e9a\u7684\u8bdd"` 
    // 解析雙引號字符串
    fmt.Println(strconv.Unquote(s1))    // Hello    世界! <nil>
    fmt.Println(strconv.Unquote(s2))    // Hello    世界! <nil>
    fmt.Println(strconv.Unquote(s3))    // to quote Shakespeare 引用莎士比亞的話 <nil>
}

運行代碼

$ go run ~/development/golang/go-string-strconv.go

代碼輸出結果如下:

--> Hello, World!
--> tips: 這裏是my類型轉換?
---- Itoa -----
--> 類型: int, 值: 3311 
--> 類型: string, 值: 3311 
---- Atoi -----
--> 類型: int, 值: 1012 
---- ParseFloat -----
--> 類型: float64, 值: 3.1415927410125732 
--> 類型: float64, 值: 3.1415926535 
---- Quote -----
"\"Fran & \\n \\t Freddie's Diner\t☺\""
"to quote Shakespeare \u5f15\u7528\u838e\u58eb\u6bd4\u4e9a\u7684\u8bdd"
---- Unquote -----
Hello	世界! <nil>
Hello	世界! <nil>
to quote Shakespeare 引用莎士比亞的話 <nil>

Reference

https://golang.google.cn/pkg/strconv/
https://www.cnblogs.com/golove/p/3262925.html
https://www.cnblogs.com/f-ck-need-u/p/9863915.html

[END]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章