1 回答

TA贡献1943条经验 获得超7个赞
这是您的自定义Transform()函数:
func Transform(s string) ([]byte, error) {
var t transform.Transformer
t = transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
dst := make([]byte, len(s))
_, _, err := t.Transform(dst, []byte(s), true)
if err != nil {
return nil, err
}
return dst, nil
}
在其中,您正在使用Transformer.Transform()它还返回写入目标的字节数。但是您不使用该返回值。
最简单的方法是存储nDst返回值,并对目标切片进行切片,因为它保存了其中“有用”字节的数量(超出的字节nDst将保留0为前面make()调用所传递给您的):
nDst, _, err := t.Transform(dst, []byte(s), true)
if err != nil {
return nil, err
}
return dst[:nDst], nil
通过此更改,返回的切片将仅包含有用的字节而没有尾随零。
输出将是(在Go Playground上尝试):
2009/11/10 23:00:00 bytes: [99 97 102 101] string: cafe
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报