|
|
-
こういうコードでバグるときがある
-
そもそも
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
の![]($ j](https://scrapbox.io/yuwd/%5D%28%24%20j)番目以降に容赦なく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はキモい