13. type-conversion

// 字符串与数字
s := strconv.Itoa(123)      // int => string 类比 to_string
i, _ := strconv.Atoi("123") // string => int 类比 stoi

// 字符串 与 []byte
b := []byte("hello")
s := string(b)
const x int = 42
var y float64 = x // const int => float64

var a int = 42
// var b float64 = a // 编译错误
var b float64 = float64(a)
// 1. 手动遍历转换
src := []int{1, 2, 3}
dst := make([]float64, len(src))
for i, v := range src {
    dst[i] = float64(v) // 显式转换
}

// 2. 泛型函数 Go 1.18+
func ConvertSlice[T, U any](src []T) []U {
    dst := make([]U, len(src))
    for i, v := range src {
        dst[i] = U(v) // 显式转换
    }
    return dst
}
// 使用
intSlice := []int{1, 2, 3}
floatSlice := ConvertSlice[int, float64](intSlice)