struct String
{
byte* str
intgo len
}
这个结构体让我想起了nginx的string,他是这样定义的:
typedef struct {
size_t len
u_char *data
} ngx_str_t
golang里边 string的概念其实不是以前遇到\0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样赋值,如果p里边有\0,他不会做处理这个时候,如果再对这个string做其他处理就可能出问题了,比如strconv.Atoi转成int就有错误,解决办法就是需要自己写一个正规的转换函数:
func byteString(p []byte) string {
for i := 0i <len(p)i++ {
if p[i] == 0 {
return string(p[0:i])
}
}
return string(p)
}
这样就不会出问题了