Golang方法声明与使用
一.Golang方法介绍
- 方法与函数区别
- 函数可以直接用函数名称直接调用,而方法则需要变量+方法名调用
- 方法在传递实例的时候最好传递地址,处理速度会比值传递要快
- 函数在接收一个指针后,需要用到传统(*变量名)拿取指针值,而在方法中底成做了优化,可以直接用变量名拿去值不需要加*号
- 方法在声明的时候需要绑定一个自定义类型如常用的struct,或者init,string,interface都可以
- 在实现了String()方法后会改写默认打印结果
二.方法的声明与使用
- 方法的声明
1>在这里可以看到声明方法的时候需要绑定一个类型,这个是和函数不同的地方,除了绑定这一块后面的都和函数差不多,有行参也有返回值![在这里插入图片描述](https://img-blog.csdnimg.cn/bd5e1ccbdb7243d89693562743158c4b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWnp6V0Nsb2Nr,size_20,color_FFFFFF,t_70,g_se,x_16)
- 方法的使用
2>调用Print方法![在这里插入图片描述](https://img-blog.csdnimg.cn/2de6d206e15e4b8abfe393203e44d01b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWnp6V0Nsb2Nr,size_20,color_FFFFFF,t_70,g_se,x_16)
3>可以在方法内部修改绑定实例里面的属性,前提是接收实例的指针![在这里插入图片描述](https://img-blog.csdnimg.cn/f8e1ed5b03964b81b82d1beab5d8b852.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWnp6V0Nsb2Nr,size_20,color_FFFFFF,t_70,g_se,x_16)
4>完成一个String方法 重改打印结果![在这里插入图片描述](https://img-blog.csdnimg.cn/2d06f457b689440e86d25ebde674b2d4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWnp6V0Nsb2Nr,size_20,color_FFFFFF,t_70,g_se,x_16)
三.代码块
package main
import "fmt"
type Monster struct {
Name string
}
func (m *Monster) Print() (str string) {
str = m.Name
return str
}
func (m *Monster) Change(str string) {
m.Name = str
}
func (m *Monster) String() string {
str := fmt.Sprintf("name=[%v]", m.Name)
return str
}
func main() {
Monster := Monster{"车友车行"}
res := Monster.Print()
fmt.Println(res)
Monster.Change("悟空")
fmt.Println(Monster.Name)
fmt.Println(&Monster)
}