Golangのポインタ(一)


golangのポインタはCのように計算できません.例えば、配列のヘッダポインタを取得し、ヘッダポインタに沿って下に増やし、配列の各値を順次取得します.golangのポインタはそれ自体のsizeを知らず、加算減算もできません
package main

import "fmt"

func main ()  {
     var name = "Lee"
      //  C  ,  &    
     var p_name *string = &name
     // *p_name   ,  p_name      
     *p_name = "Leee"
     fmt.Println(name)
}

パラメータ伝達、値伝達
package main

import "fmt"

func swap_val(a, b int){
    b, a = a, b
}
func swap_val_res(a, b int) (int,int){
    b, a = a, b
    return a, b
}
func main ()  {
    a, b := 1,2
    fmt.Println(a, b)
    swap_val(a, b)
    fmt.Println(a, b)
    a, b = swap_val_res(a, b)
    fmt.Println(a, b)
}

実行結果
1 2
1 2
2 1

パラメータ伝達、参照伝達
package main

import "fmt"

func swap_ref(a, b *int){
    *b, *a = *a, *b
}

func main ()  {
    a, b := 1,2
    fmt.Println(a, b)
    swap_ref(&a, &b)
    fmt.Println(a, b)
}

結果
1 2
2 1

まとめ
  • ポインタを使用して値を渡すタイミング
  • 内容を変更することを考慮する
  • .
  • 構造が大きすぎる