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
}
posted @ 2020-03-28 10:29  DongDon  阅读(79)  评论(0)    收藏  举报