|
|
-
こういうコードでバグるときがある
-
そもそも
appendとはどういうものか?append(str[:j](https://scrapbox.io/yuwd/%3Aj),hoge...)をすると,appendはまずcap(str)を見るcap(str)にhogeが入りきらないとわかると, より長い配列を作成して,str[:j](https://scrapbox.io/yuwd/%3Aj)とhogeをconcatしたものを コピーし直すcap(str)にhogeが入るとわかると,strの番目以降に容赦なくhogeを上書きす)- ↑ こいつが原因
-
なので, appendは後ろ向きに考えて
append(hoge, str[j:](https://scrapbox.io/yuwd/j%3A)...)を先に生成すると良いs := append(str[:j](https://scrapbox.io/yuwd/%3Aj), append(hoge, str[j:](https://scrapbox.io/yuwd/j%3A)...)...)
-
結論: Golangはキモい