2016-05-04 12 views
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にする必要があります。漏れ。

+0

gccgoのバグのような感じです。あなたはそれを報告しましたか? https://github.com/golang/go/issues –

+0

これについて既存の問題は見つかりませんでした。 https://github.com/golang/go/issues/23433で作成されたものです。 –

答えて

関連する問題