项目中 RPC 接口由于在入口直接打印 []byte 字节数组形式了,在查询日志的时候很难辨认,需要把其复制下来,再转成字符串。
比如,日志中打印的是 “[104 101 108 108 111 32 119 111 114 108 100]” 这样形式的 byte 数组,那么具体操作如下
func byte2Str() {
bt := []byte{104,101,108,108,111,32,119,111,114,108,100}
fmt.Println(string(bt)) // 输出 hello world
}
当然了,逆推下,上述 byte 数组是如下方法打印的
func str2Byte() {
str := "hello world"
bt := []byte(str)
fmt.Println(bt) // 输出 [104 101 108 108 111 32 119 111 114 108 100]
}
最后,推荐下两个性能更优的转换函数
func StringToBytes(s string) []byte {
return *(*[]byte)(unsafe.Pointer(
&struct {
string
Cap int
}{s, len(s)},
))
}
func BytesToString(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}