代碼
// 基本數據類型轉換為string類型
package main
import (
"fmt"
"strconv"
)
func main() {
// 第一種方式使用fmt.Sprintf
var v1 int = 100
// v2的類型為float64
var v2 = 3.14
// v3的類型為int32
v3 := 'm'
var v4 bool = false
var str string
str = fmt.Sprintf("%d", v1)
fmt.Printf("v1的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v1, v1, str) // v1的原值為100, 類型為int, 轉換成string類型值為"100"
str = fmt.Sprintf("%f", v2)
fmt.Printf("v2的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v2, v2, str) // v2的原值為3.14, 類型為float64, 轉換成string類型值為"3.140000"
str = fmt.Sprintf("%c", v3)
fmt.Printf("v3的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v3, v3, str) // v3的原值為109, 類型為int32, 轉換成string類型值為"m"
str = fmt.Sprintf("%t", v4)
fmt.Printf("v4的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v4, v4, str) // v4的原值為false, 類型為bool, 轉換成string類型值為"false"
// 第二種方式使用strconv包的函數
var v5 uint8 = 100
var v6 bool = true
var v7 int = 999999
var v8 float32 = 3.1415926
var v9 float64 = 3.1415926
str = strconv.FormatUint(uint64(v5), 10)
fmt.Printf("v5的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v5, v5, str) // v5的原值為100, 類型為uint8, 轉換成string類型值為"100"
str = strconv.FormatBool(v6)
fmt.Printf("v6的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v6, v6, str) // v6的原值為true, 類型為bool, 轉換成string類型值為"true"
str = strconv.FormatInt(int64(v7), 10)
fmt.Printf("v7的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v7, v7, str) // v7的原值為999999, 類型為int, 轉換成string類型值為"999999"
// 注意轉換之后有精度的損失
// 第二個參數表示轉換格式byte類型,如 'f', 'b'等
// 第三個參數表示精度,如保留幾位小數
// 第四個參數表示位數為int型
str = strconv.FormatFloat(float64(v8), 'f', 10, 64)
fmt.Printf("v8的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v8, v8, str) // v8的原值為3.1415925, 類型為float32, 轉換成string類型值為"3.1415925026"
str = strconv.FormatFloat(v9, 'f', 10, 64)
fmt.Printf("v8的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v9, v9, str) // v8的原值為3.1415926, 類型為float64, 轉換成string類型值為"3.1415926000"
// 使用strconv包的Itoa函數
// strconv.Itoa 等價於 strconv.FormatInt(int64(i), 10)
var v10 uint8 = 127
str = strconv.Itoa(int(v10))
fmt.Printf("v10的原值為%v, 類型為%T, 轉換成string類型值為%q\n", v10, v10, str) // v10的原值為127, 類型為uint8, 轉換成string類型值為"127"
}
總結

查看源代碼