Go言語のアドレスとポインタを整理する

はじめに

goを弄る際、必ずと言っていいほど毎回調べている気がするので整理する。

サンプルプログラム

package main

import "fmt"

func one(x *int) {
	*x = 1
}

func main() {

	var n int = 100
	one(&n)
	fmt.Println(n)
	fmt.Println(&n)
}

サンプルプログラムの出力結果

1
0xc420084008

 

解説

function oneはintのアドレスを引数に受け付ける

“` * “` はポインタ型の箱として理解する

fmt.Println(*n) とした場合、箱の中身。

上記例でいうと100が表示される。

 

“` & “` はアドレスとして理解する。上記例でいうと0xc420084008とかになる。