Go语言中各种类型数据的转换

字符串与其他类型的转换

  • 字符串转整数:使用strconv.Atoi()函数,如strconv.Atoi("10")
  • 整数转字符串:使用strconv.Itoa()函数,如strconv.Itoa(10)
  • 字符串转浮点数:使用strconv.ParseFloat()函数,如strconv.ParseFloat("1.23", 64)
  • 浮点数转字符串:使用strconv.FormatFloat()函数,如strconv.FormatFloat(1.23, 'f', 2, 64)

其他数值类型间的转换

  • int和int64之间:直接赋值即可,go支持自动类型推导
  • int和float32/float64之间:直接赋值即可,如 var f float32 = 1
  • float32和float64之间:直接赋值即可

数组和切片之间的转换

  • 数组转切片:切片就是数组的一个view,直接把数组的slice传递给切片,如slice := arr[start:end]
    切片转数组:使用copy()函数,如arr := make([]T, len(slice)); copy(arr, slice)
  • 接口interface{}与具体类型之间的转换
  • interface{}转具体类型:使用类型断言,如str, ok := in.(string); 如果ok为true,说明转换成功
  • 具体类型转interface{}:直接赋值给interface{},如var in interface{} = "hello"

切片/数组与map之间的转换

  • 切片转map:遍历切片,以元素作为key,索引作为value存入map,如
s := []string{"a", "b", "c"}
m := make(map[string]int)
for i, v := range s {
    m[v] = i
}
  • map转切片:遍历map,依次将key和value存入切片,如
m := map[string]int{"a": 1, "b": 2}
var s [][2]string
for k, v := range m {
    s = append(s, [2]string{k, strconv.Itoa(v)})
}

综上,Go语言支持多种类型的数据相互转换,这给开发带来了很大的便捷。理解每个类型的数据结构和行为,可以让我们更加熟练地进行各种数据类型的转化和处理。

原文链接:,转发请注明来源!