golang中各种类型转换

golang中各种类型转换,第1张

文章目录 基本数据之间的转换接口转其他类型string 转切片切片转 string数组转切片切片转数组string 转数组数组转 stringstring 转字符字符转 string

基本数据之间的转换

注意数据类型的范围,因为值可能溢出

// int 转 float
a := 1
var b float32 = float32(a)
接口转其他类型
// 接口转基本数据类型,其实也是类型判定的一种方式
var a interface{} = "hello world"
var b string = a.(string)
// 接口转切片
var a interface{} = []int{1, 2, 3}
var b []int = a.([]int)
// 接口转 map
var a interface{} = map[string]int{"a": 1}
var b map[string][] = a.(map[string][])
string 转切片
// string 转 []rune 切片,rune 是支持 utf-8,所以切换成 rune 切片会直接显示 rune 数字
str := "你好世界"
var r []rune = ([]rune)str
// 控制台输出 r 如下
[25105 30340 19990 30028]

// string 转 []byte 切片,byte 不支持 utf-8,所以切换成 rune 切片会按照字节来拆解
str := "你好世界"
var b []byte = ([]byte)str
// 控制太输出 b 如下
[230 136 145 231 154 132 228 184 150 231 149 140]

// string 转其他类型的则不太行
切片转 string
// rune 切片转 string
r1 := []rune{'你', '好', '世', '界'}
r2 := []rune{25105, 30340, 19990, 30028}
var str1 string = string(r1)
var str2 string = string(r2)
// 控制最终都能成功转成“你好世界”的字符串

// byte 切片转 string
b1 := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
b2 := []byte{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}
var str1 string = string(b1)
var str2 string = string(b2)
// 控制太最终都能成功转成“你好世界”的字符串
数组转切片
var arr [3]int = [3]int{1, 2, 3}
var sli []int = arr[:]
切片转数组

方式一:使用 copy 函数

var sli []int = []int{1, 2, 3}
var arr [3]int
// sli 赋值给 arr
copy(arr[:], sli)

方式二:使用循环

var sli []int = []int{1, 2, 3}
var arr [3]int
// 循环给数组赋值
for i, v := range sli {
  arr[i] = v
}
string 转数组

先通过 string 转切片,然后再把切片转成数组的形式

数组转 string
// rune 数组转 string 需要中间一步 *** 作,先把数组变成切片。数组->切片->string
var r [4]rune = [4]rune{'你', '好', '世', '界'}
var str string = string(r[:])

// byte 数组转 string 需要中间一步 *** 作,先把数组变成切片。数组->切片->string
var b [11]byte = [11]byte{'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'}
var str string = string(b[:])
string 转字符

这里拿 rune 举例

var r rune
var str string = "1"
r = rune(string[0])
字符转 string
var r rune = '1'
var str string
str = string(r)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/990970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存