方法值

sunny0901發表於2021-12-28
package main

import "fmt"

type Person struct {
   name string //名字
  sex  byte   //性別, 字元型別
  age  int    //年齡
}

func (p Person) SetInfoValue() {
   fmt.Printf("SetInfoValue: %p, %v\n", &p, p)
}

func (p *Person) SetInfoPointer() {
   fmt.Printf("SetInfoPointer: %p, %v\n", p, p)
}

func main() {
   p := Person{"mike", 'm', 18}
   fmt.Printf("main: %p, %v\n", &p, p)

   p.SetInfoPointer() //傳統呼叫方式

  //儲存方式入口地址
  pFunc := p.SetInfoPointer //這個就是方法值,呼叫函式時,無需再傳遞接收者,隱藏了接收者
  pFunc()                   //等價於 p.SetInfoPointer()
  vFunc := p.SetInfoValue
   vFunc() //等價於 p.SetInfoValue()
   }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章