35_方法的使用

概述:

在面向对象编程中,一个对象其实也就是一个简单的值或者一个变量,在这个对象中会包含一些函数,这种带有接收者的函数,我们称为方法(method)。 本质上,一个方法则是一个和特殊类型关联的函数。

一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对象的用户就不需要直接去操作对象,而是借助方法来做这些事情。

//在go语言中,可以给任意的自定义类型(包括内置类型,但不包括本身是指针类型),添加相应的方法
//方法总是绑定对象实例,并隐式的将实例作为第一参数(receiver)
//格式如下: func (receiver ReceiverType)funcName(parameter)results{}
//值传递

代码如下:
package main
 
import "fmt"
 
type Student struct {
	//和变量定义不同,不要写var关键字
	Id   int
	Name string
	Sex  byte
	Age  int
	Addr string
}
func (s Student) PrintInfo() {
	fmt.Println("该学生姓名为:", s.Name)
	s.Name = "steven"
	fmt.Println("该学生姓名为:", s.Name) //steven
}
func (s *Student) PrintInfoName() {
	s.Name = "steven"
	fmt.Println("该学生姓名为:", s.Name)
 
}
func main() {
	var s1 Student = Student{1, "zhao", 'm', 24, "js"}
	s1.PrintInfo()
	fmt.Println("该学生姓名为:", s1.Name) //zhao
 
	//引用传递
	var s2 *Student
	s2 = new(Student) //如果不开辟空间的话,没有赋值的成员,会没有地址,从而报错 invalid memory address or nil pointer dereference
	s2.Name = "zhao"
	(s2).PrintInfoName()
	fmt.Println("该学生姓名为:", s2.Name)

}

猜你喜欢

转载自www.cnblogs.com/zhaopp/p/11565313.html
35