gitkadoの気まぐれ日記

島根在住エンジニアが何かに興味を持ったらブログを更新します

Go備忘録 -ポインタ-

Go備忘録 -ポインタ-

詳しい説明はこの記事に書いてありました。

ポインタ使い方

// 適当なオブジェクト(int型)
obj := 100

// int型のポインタ格納用変数定義
var pointer *int

// int型のポインタ格納用変数定義+objのポインタを代入
var pointer *int = &obj
// 同上
pointer := &obj

// ポインタ領域に格納されている値を参照
*pointer // => 100

ポインタを使ってない場合

func add_num(num int){
  num++
}
num := 1
add_num(num)
add_num(num)
num // => 1

ポインタを使った場合

func add_num(pointer *int){
  *pointer++
}
num := 1
add_num(&num)
add_num(&num)
num // => 3

ポインタ領域確保

GCが組み込まれているので手動で領域解放する必要はない

// int型のポインタ領域を確保
var pointer *int = new(int)
// 同上
pointer := new(int)

Question (保留事項)

  • ポインタ領域を確保しておく事で何が嬉しいの?
  • 領域が足りていない場合にどんな問題が起こり得るの?