跳到主要内容

1.5-go 类型转换

Create by fall on 01 Dec 2025 Recently revised in 05 Dec 2025

类型转换

当前的数据,如何转换为对应的格式

number

number 转换到其它类型

// 整数类型之间的转换
func IntTrans (){
var i int = 42
var i32 int32 = int32(i)
var i64 int64 = int64(i)
var u uint = uint(i)

// 浮点数转换
var f32 float32 = 3.14
var f64 float64 = float64(f32)
fmt.Printf("float64: %f\n", f64)

// 浮点数和整数之间的转换
var num int = int(f32) // 3 (截断小数部分)
// 整数转字符串
num := 42
str1 := strconv.Itoa(num) // "42"
str2 := strconv.FormatInt(123, 10) // "123" (十进制)
str3 := strconv.FormatInt(255, 16) // "ff" (十六进制)
// 浮点数转字符串
floatStr1 := strconv.FormatFloat(3.14159, 'f', 2, 64) // "3.14"
floatStr2 := strconv.FormatFloat(3.14159, 'e', 3, 64) // "3.142e+00"
}

boolean

func ParseBoolean(){
// 布尔值转字符串
str1 := strconv.FormatBool(true)
str2 := strconv.FormatBool(false)
str3 := fmt.Sprintf("%t", true)
}

string

import (
"strconv"
)
func StringConv(){
// string 转 int
str1 := "1134"
num, err1:= strconv.Atoi(str1)
// strconv.Atoi 等价于 ParseInt(str1, 10, 0)
// string 转 bool
b1, _ := strconv.ParseBool("true")
b2, _ := strconv.ParseBool("false")
b3, _ := strconv.ParseBool("1")
b4, _ := strconv.ParseBool("0")
if err != nil {
Println("active 必须是布尔值")
return
}
// 字符串转整数
num1, err1 := strconv.Atoi("42")
num2, err2 := strconv.ParseInt("FF", 16, 64) // 255
num3, err3 := strconv.ParseInt("1010", 2, 64) // 10 (二进制)
// 字符串切片
str := "Hello, 世界"
bytes := []byte(str) // 转换为字节切片
strFromBytes := string(bytes) // 转换回字符串
// 字符串和符文切片转换
runes := []rune(str) // 转换为符文切片
strFromRunes := string(runes) // 转换回字符串
}

相关包

// 使用 fmt.Sprintf 转换各种类型为字符串
str1 := fmt.Sprintf("%d", 42) // "42"
str2 := fmt.Sprintf("%f", 3.14) // "3.140000"
str3 := fmt.Sprintf("%.2f", 3.14159) // "3.14"
str4 := fmt.Sprintf("%x", 255) // "ff"
str5 := fmt.Sprintf("%t", true) // "true"