这个:
label := string([]byte{97, 98, 99, 0, 0, 0, 0}) fmt.Printf("%s\n", label)
这样做(^@是空字节):
^@
go run test.go abc^@^@^@
Go的syscall程序包中隐藏了该函数,该函数查找第一个空字节([] byte {0})并返回长度。我假设它被称为C-Length。
抱歉,我迟到了一年,但是我认为它比其他两个 要 简单得多(没有不必要的输入等)。
func clen(n []byte) int { for i := 0; i < len(n); i++ { if n[i] == 0 { return i } } return len(n) }
所以,
label := []byte{97, 98, 99, 0, 0, 0, 0} s := label[:clen(label)] fmt.Println(string(s))
^的意思是设置s为label从头到索引处的字节片clen(label)。
s
label
clen(label)
结果将为abc3。
abc