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()
}
注意点
- 
结构体是值类型, 函数内修改值, 不会对外部产生影响 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, "吃"} }
- 
如果希望在方法中修改结构体变量的值, 可以通过指针结构体来处理 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 吃} }
- 
如果一个类型实现了 String()string方法, 那么fmt.Println默认会调用这个变量的String()string进行输出,stuctType也可以是指针和 Java的sout一样//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) //猪皮 }

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号