2017-03-09 4 views
0

スライスをパラメータとしてスライスへのポインタを受け入れる関数のスライスがあります。そのスライスへのポインタを使用してスライスアイテムを取得する方法

mainSlice := []int{0,8,5,4,6,9,7,1,2,3,6,4,5,7} 
doSmthWithSlice(mainSlice) 

スライスへのポインタを使ってスライスアイテムを取得する方法はありますが、ポインタが新しいスライスにポイントする値をコピーすることはありませんか?

func doSmthWithSlice(slcPtr *[]int) { 
    *slcPtr[3] = 777 // this does NOT works, because *[]int does not support indexing 

    // Don't want to implement it 
    // like this 
    newSlice := *slcPtr 
    newSlice[3] = 777 
    *slcPtr = newSlice 
} 

はあなたに
P.S.ありがとうございました
このような原始的な質問を申し訳ありません。私は新しいです。

答えて

2

操作の順序は重要です。ポインタを逆参照してからインデックスを作成する必要があります。

func doSmthWithSlice(slPtr *[]int) { 
    (*slcPtr)[3] = 777 
} 

括弧なしでは、インデックス演算子はスライスポインタに適用されます。無効な操作です。

+0

あなたはただそれに私を打つ! https://play.golang.org/p/x3fQXtjcnO –

関連する問題