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 關注
- 114 瀏覽
添加回答
舉報