Goの[]byte -> stringへのcastってshrinkするんですか?

珍しく技術系の投稿をします(ただし疑問、忘備録

tooEnoughBuf := make([]byte, tooEnoughSize)
Write1(tooEnoughBuf, src)
string(tooEnoughBuf) == string(src) // false

をしたい時のbufの長さをshrinkする方法を考えています。

なぜこの等価判定がfalseになるかというと

len(tooEnoughBuf) == len(src)

がfalseになるからですね。

func shrinkString(s string) string {
	var eos byte
	buf := make([]byte, 0)
	for _, b := range []byte(s) {
		if b == eos {
			break
		}
		buf = append(buf, b)
	}
	return string(buf)
}

のような実装を与えてあげればいいのだろうか・・・?わからない・・・