2
GCCGOで本当に奇妙な問題が見つかりました。誰かが説明できるかどうか疑問に思っていました。スライス差分から要素を削除するgccgo vs gc
私は、提案されたスライストリック(https://github.com/golang/go/wiki/SliceTricks)を使用してインデックスでスライスから要素を削除しようとしています。
次のコード(https://play.golang.org/p/f039m1h7Z1):
package main
import "fmt"
func main() {
xs := []int{0,1,2,3,4}
i := 2
xs, xs[len(xs)-1] = append(xs[:i], xs[i+1:]...), 0
fmt.Println(xs)
}
行くコンパイラで動作(実行を行く)が、私は
gccgo -g -static-libgcc
でそれをコンパイルしようとしたとき、私は
panic: runtime error: index out of range
を取得
行:
xs, xs[len(xs)-1] = append(xs[:i], xs[i+1:]...), 0
どうしてですか?
注:完全な使用例では、実際には構造体へのポインタのスライスなので、スライストリックに応じて、メモリを防ぐために古いスライスの最終ポインタをnullにする必要があります。漏れ。
gccgoのバグのような感じです。あなたはそれを報告しましたか? https://github.com/golang/go/issues –
これについて既存の問題は見つかりませんでした。 https://github.com/golang/go/issues/23433で作成されたものです。 –