web-dev-qa-db-ja.com

golang append()は評価されましたが、使用されていません

func main(){
     var array [10]int
     sliceA := array[0:5]
     append(sliceA, 4)
     fmt.Println(sliceA)
}

エラー:append(sliceA、4)評価されましたが使用されていません

理由がわかりませんか?スライスの追加操作は実行されません...

42
L.jerson

参照: スライスの追加とコピー

Goでは、引数は値で渡されます。

一般的なappendの使用法は次のとおりです。

a = append(a, x)

あなたが書く必要があります:

func main(){
    var array [10]int
    sliceA := array[0:5]
    // append(sliceA, 4)  // discard
    sliceA = append(sliceA, 4)  // keep
    fmt.Println(sliceA)
}

出力

[0 0 0 0 0 4]

役に立てば幸いです。

59
Mohsin

sliceA = append(sliceA、4)appendは、1つ以上の新しい値を含むスライスを返します。新しいスライス値を取得する可能性があるため、appendからの戻り値を受け入れる必要があることに注意してください。

4
榴莲榴莲

あなたはこれを試すことができます:

sliceA = append(sliceA, 4)

組み込み関数append([]type, ...type)は、入力配列/スライスが単なるソースである一方で、希望する値に割り当てられるタイプの配列/スライスを返します。単純に、outputSlice = append(sourceSlice, appendedValue)

3
Nevercare

Goごとのドキュメント:

Appendの結果の値は、元のスライスのすべての要素と提供された値を含むスライスです。

したがって、「append」の戻り値には、元のスライスに追加部分が含まれます。

1
djt