This:
label := string([]byte{97, 98, 99, 0, 0, 0, 0})
fmt.Printf("%s\n", label)
做这个 (^@
是空字节):
go run test.go
abc^@^@^@
Go 的系统调用包中隐藏着这个函数,它可以查找第一个空字节 ([]byte{0}) 并返回长度。我假设它被称为 C-Length 的 clen。
抱歉,我这个答案晚了一年,但我认为这是一个lot比其他两个更简单(没有不必要的导入等)
func clen(n []byte) int {
for i := 0; i < len(n); i++ {
if n[i] == 0 {
return i
}
}
return len(n)
}
So,
label := []byte{97, 98, 99, 0, 0, 0, 0}
s := label[:clen(label)]
fmt.Println(string(s))
^说的是设置s
到字节切片label
从开始到索引clen(label)
.
结果将是abc
长度为3。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)