decodeRuneInternal和decodeRuneInStringInternal之间有什么区别

时间:2016-01-16 03:42:03

标签: go

在golang的std包中,“func decodeRuneInternal”和“func decodeRuneInStringInternal”除了args之外是相同的,即:

func decodeRuneInternal(p []byte) (r rune, size int, short bool)
func decodeRuneInStringInternal(s string) (r rune, size int, short bool)

为什么不将decodeRuneInStringInternal定义为:

func decodeRuneInStringInternal(s string) (r rune, size int, short bool) {
    return decodeRuneInternal([]byte(s)) (r rune, size int, short bool)
}

在utf8.go中,decodeRuneInStringInternal的实现与decodeRuneInternal相同。

为什么?

1 个答案:

答案 0 :(得分:2)

在字符串函数包装[]字节函数或转换[]byte(s)中的内存分配的情况下,两个函数避免转换string(p)中的内存分配。 byte函数包装字符串函数。