go-方法
方法
python中:绑定给对象的函数叫做对象的绑定方法,但是类去调用该函数时,需要主动传递self参数,即对象的绑定方法相对于类来说就是一个普通函数
go中:声明函数时,将它绑定给某个结构体(最常用),那么该函数就叫做结构体的绑定方法
声明
func (a Type) funcName(){} // 声明了一个Type类型的绑定方法funcName
代码演示:调用方法
注意指针接收器和值接收器
package main
import (
"fmt"
)
type Student struct {
name string
age int
homeworkStatus string
}
//func (s Student) write() { // 值传递,不影响原数据
// fmt.Println("开始写作业")
// s.homeworkStatus = "已完成"
// fmt.Println(s.homeworkStatus)
//}
func (s *Student) write(){ // 指针传递,操作的就是原数据
fmt.Println("开始写作业")
s.homeworkStatus = "已完成" // 在go中,通过指针可以直接操作结构体数据,跟数组一样
// (&s)homeworkStatus = "已完成" // 等同于上一句
fmt.Println(s.homeworkStatus)
}
func main() {
var student1 = Student{"小红", 19, "未完成"}
fmt.Println(student1)
student1.write()
fmt.Println(student1)
}
方法提升
结构体绑定方法后,结构体变量对方法的访问规则跟对结构体成员变量的访问规则一样
因此,在匿名成员是一个结构体时,外层也可以直接访问内层独有的属性,跟结构体中讲到的成员提升原理相同
此时,结构体是一个封装了一系列属性和方法的集合,跟python中的类高度类似
给传统数据类型绑定方法
type Myint int //把int类型重命名为Myint
func (i *Myint)add() {
(*i)=(*i)+1
}

浙公网安备 33010602011771号