エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Go 副作用を期待して関数にSliceを渡す際の注意点 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Go 副作用を期待して関数にSliceを渡す際の注意点 - Qiita
概要 Goの sliceは参照渡しだがややこしい 前提として Goのsliceは一応参照渡しである 参照渡しなので、... 概要 Goの sliceは参照渡しだがややこしい 前提として Goのsliceは一応参照渡しである 参照渡しなので、呼び出し先の関数内の更新は、呼び出し元に反映される (sli[0] = "updated" 等) しかし goの組み込み関数 appendを使った更新は呼び出し元に反映されない 理由は appendによる更新が、単なる変数の再代入で実現されているからである(sli = append(sli, "appended") 等) このため呼び出し元とヒープで共有するメモリには一切変更が入らない テストコード 下記のテストコードでは下記の 3種類の関数を呼び出し、呼び出し元への影響を確認している 変数の再代入による更新 組み込み関数 appendを用いた更新 参照に閉じた更新 import ( "github.com/stretchr/testify/assert" "testing"