日: 2019年2月5日

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

    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とかになる。