anomalocaristan’s blog

JSやGo、設計などについて学んだことをメモしておくサイトです

Goのポインタ操作

ポインタを操作してメモリの中をみる(<●><●>)

Goではポインタを使用する。
このポインタを利用して、オペランドのアドレスを参照したり
アドレスを指定して中身を参照したりできる。
メリットとしては、

  • 関数に引数を与える時に、オブジェクトやリテラルのコピーを作成しなくていいので省エネ
  • 配列にオブジェクトを入れたい時とかも、態々重たいオブジェクトを入れなくて済む

などなど・・・。

ポインタの操作法

& オペレータでオペランドのポインタを引き出す。
* オペレータで指定されたアドレスの中身を参照する。

package main

import "fmt"

func main () {
  i := 2019
  q := &i

  fmt.Println(q)
  // => 0x40e020 のように、ポインタが示すアドレスが返ってくる

  fmt.Println(*q)
  // => 2019 のように、ポインタが示す値が返ってくる

  *q = 2020  // ポインタを通して値を代入

  fmt.Println(*q)

  // => 2020
}


ポインタむずいから嫌い\(^o^)/

備考:
オペランド → 変数や定数のこと
オペレータ → +, -, Println()などの関数など

参考:
A Tour of Go
オペランド(被演算子)とは - IT用語辞典 e-Words