Golang语言中的method是什么

栏目: Go · 发布时间: 5年前

内容简介:什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。method的语法:func (r Receiver) funcName (parameters) (result)。receiver可以看作是method的第一个参数,method并且支持继承和重写。

什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。method的语法:func (r Receiver) funcName (parameters) (result)。receiver可以看作是method的第一个参数,method并且支持继承和重写。

/**
 * 什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。
 * method的语法:func (r Receiver) funcName (parameters) (result)。
 * receiver可以看作是method的第一个参数,method并且支持继承和重写。
 */
package main

import (
	"fmt"
)

type Human struct {
	name string
	age  int
}

// 字段继承
type Student struct {
	Human  // 匿名字段
	school string
}
type Employee struct {
	Human   // 匿名字段
	company string
}

// 函数的另外一种形态:method,语法:func (r Receiver) funcName (parameters) (result)
// method当作struct的字段使用
// receiver可以看作是method的第一个参数,指针作为receiver(接收者)
// 指针作为receiver和普通类型作为receiver的区别是指针会对实例对象的内容发生操作,普通类型只是对副本进行操作
// method也可以继承,下面是一个匿名字段实现的method,包含这个匿名字段的struct也能调用这个method
func (h *Human) Info() {
	// method里面可以访问receiver(接收者)的字段
	fmt.Printf("I am %s, %d years old\n", h.name, h.age)
}

// method重写,重写匿名字段的method
// 虽然method的名字一样,但是receiver(接收者)不一样,那么method就不一样
func (s *Student) Info() {
	fmt.Printf("I am %s, %d years old, I am a student at %s\n", s.name, s.age, s.school)
}
func (e *Employee) Info() {
	fmt.Printf("I am %s, %d years old, I am a employee at %s\n", e.name, e.age, e.company)
}
func main() {
	s1 := Student{Human{"Jack", 20}, "tsinghua"}
	e1 := Employee{Human{"Lucy", 26}, "Google"}
	// 调用method通过.访问,就像struct访问字段一样
	s1.Info()
	e1.Info()
}

以上所述就是小编给大家介绍的《Golang语言中的method是什么》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms

Data Structures and Algorithms

Alfred V. Aho、Jeffrey D. Ullman、John E. Hopcroft / Addison Wesley / 1983-1-11 / USD 74.20

The authors' treatment of data structures in Data Structures and Algorithms is unified by an informal notion of "abstract data types," allowing readers to compare different implementations of the same......一起来看看 《Data Structures and Algorithms》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具