您的当前位置:首页正文

Go语言中string与byte转换

2024-11-22 来源:个人技术集锦

简介

string与byte的转换是最常见的一种,通常我们会使用强转方式,但其实还有另一种更加高效的方式,本文会演示两种转换方式。

普通转换

func main() {
    fmt.Println([]byte("abcd"))
    fmt.Println(string([]byte{'1', '2', '3'}))
}

输出
[97 98 99 100]
123

高效转换

转换实现如下

func main() {
	fmt.Println(StringToBytes("abcd"))
	fmt.Println(BytesToString([]byte{'1', '2', '3'}))
}

func BytesToString(b []byte) string {
	return *(*string)(unsafe.Pointer(&b))
}

func StringToBytes(s string) []byte {
	return *(*[]byte)(unsafe.Pointer(
		&struct {
			string
			Cap int
		}{s, len(s)},
	))
}

输出
[97 98 99 100]
123

欢迎关注,学习不迷路!

显示全文