zoukankan      html  css  js  c++  java
  • Golang 方法

    Golang 方法

    定义

    func (recevier stuctType)identifier()(){}

    方法只能被structType的实例调用

    As Follow

    type Monster struct {
    	Name  string
    	Age   int
    	skill string
    }
    //Say方法只能由Monster类型的实例调用
    func (m Monster) Say() {
    	fmt.Printf("%v", m.Name+"会"+m.skill)
    }
    func main() {
    	monster := Monster{"猪皮", 2, "吃"}
    	monster.Say()
    }
    

    注意点

    1. 结构体是值类型, 函数内修改值, 不会对外部产生影响

      type Monster struct {
      	Name  string
      	Age   int
      	skill string
      }
      func (m Monster) Say() {
      	m.Name = "中分"
      }
      func main() {
      	monster := Monster{"猪皮", 2, "吃"}
      	fmt.Println(monster) //{"猪皮", 2, "吃"}
      	monster.Say()
      	fmt.Println(monster) //{"猪皮", 2, "吃"}
      }
      
    2. 如果希望在方法中修改结构体变量的值, 可以通过指针结构体来处理

      type Monster struct {
      	Name  string
      	Age   int
      	skill string
      }
      
      //使用指针修改值
      func (m *Monster) Say() {
      	m.Name = "中分"
      }
      func main() {
      	monster := Monster{"猪皮", 2, "吃"}
      	monster.Say() //等价于(&monster).Say()
      	fmt.Println(monster) //{中分 2 吃}
      }
      
    3. 如果一个类型实现了String()string方法, 那么fmt.Println默认会调用这个变量的String()string进行输出, stuctType也可以是指针

      Javasout一样

      //func (m Monster) String() string
      func (m *Monster) String() string{
      	str := m.Name
      	return str
      }
      func main() {
      	monster := Monster{"猪皮", 2, "吃"}
      	//fmt.Println(monster) //猪皮
      	fmt.Println(&monster) //猪皮
      }
      
  • 相关阅读:
    食物
    连在一起的幻想乡
    【XSY3209】RGB Sequence
    【Luogu4389】付公主的背包
    【BZOJ4555】【TJOI2016】【HEOI2016】求和
    【BZOJ3456】城市规划
    【BZOJ2693】jzptab & 【BZOJ2154】Crash的数字表格
    【Learning】左偏树
    小Z的袜子
    【BZOJ3625】【CF438E】小朋友和二叉树
  • 原文地址:https://www.cnblogs.com/kikochz/p/13488295.html
Copyright © 2011-2022 走看看