2016-07-27 25 views
0

私はPythonでlistに新しい要素を追加するように、スライスに新しい要素を追加しようとしましたが、そこにエラー新しい要素をスライスに追加する方法は?

package main 

import "fmt" 

func main() { 
    s := []int{2, 3, 5, 7, 11, 13} 
    printSlice(s) 

    s[len(s)] = 100 
    printSlice(s) 
} 

func printSlice(s []int) { 
    fmt.Printf("%v\n", s) 
} 

であり、出力は

[2 3 5 7 11 13] 

panic: runtime error: index out of range 

どのようにできています私はスライスに新しい要素を追加しますか?

Goでsliceがクローゼットのデータ型がPythonのlistになっていますか?

ありがとうございました。

+2

https://gobyexample.com/slices – abhink

+1

を/effective_go.html#append)、[Go Language Specification(https://golang.org/ref/spec#Appending_and_copying_slices)]、[Go of Tour(https://tour.golang.org/moretypes/ 7) – JimB

+0

参照:http://stackoverflow.com/questions/20195296/golang-append-an-item-to-a-slice/20197469#20197469 – gavv

答えて

3

Goには、組み込みメソッドappendが使用されます。たとえば:

s := []byte{1, 2, 3} 
s = append(s, 4, 5, 6) 
fmt.Println(s) 
// Output: [1 2 3 4 5 6] 

あなたは正しい、移動中のスライスは、実際には、同じインデックスの多くとスライシング操作はそれらに取り組む、Pythonのリストに接近している、と。

あなたは:

s[len(s)] = 100 

あなたは、スライスの長さを超えて値にアクセスすることはできませんので、それはパニックになります。 Pythonではこれとまったく同じように動作するため、混乱が生じるようです。 (すでにリストを展開していない限り)Pythonで上記をしようとすると得られます:[有効ゴー](https://golang.org/docでも

IndexError: list assignment index out of range 
関連する問題