Go- 方法 -1
发布于: 47 分钟前

Go 学习笔记,学习内容《Go入门指南》
主要介绍以下内容:
方法的定义
方法和未导出字段的使用
内嵌类型的方法继承
代码示例可以直接运行
person.go
package person
type Person struct { firstName string lastName string}
func (p *Person) FirstName() string { return p.firstName}
func (p *Person) SetFirstName(newName string) { p.firstName = newName}复制代码
main.go
package main
import ( "fmt" "person")
func printDivider(str ...string) { fmt.Println() fmt.Println("-----------------------------------------------") if len(str) > 0 { fmt.Println(str) }}
type MyClass struct { name string age uint8}
type NewClass struct { MyClass // 继承类型MyClass的同时,也会继承MyClass的方法 tel string}
func main() { /* 方法的定义 1、某种类型可以定义该类型可以有的方法 2、类型的声明和方法的定义可以不在同一个文件中,但必须在同一个包中 */ printDivider("方法的定义") p1 := MyClass{"Mark", 100} // 调用方法时,p1可以是指针,也可以是实例 p1.PrintInfo() // p1 会作为函数的参数进行传递 输出:name = Mark, age = 100 p1.SetAge(18) p1.PrintInfo() // 输出:name = Mark, age = 18
//PrintInfo(p1) 编译错误:undefined: PrintInfo 方法不能单独调用
/* 方法和未导出字段的使用 */ printDivider("方法和未导出字段的使用") p2 := new(person.Person) //p2.firstName = "Marry" // 编译错误:cannot assign to p.FirstName p2.SetFirstName("Marry") fname := p2.FirstName() fmt.Println(fname) // 输出:Marry
/* 内嵌类型的方法继承 */ printDivider("内嵌类型的方法继承") p3 := NewClass{MyClass{"Jack", 21}, "17234561298"} p3.PrintInfo() // 输出:name = Jack, age = 21 NewClass类型的p3可以直接使用MyClass的方法 p3.SetAge(55) p3.PrintInfo() // 输出:name = Jack, age = 55}
func (mc MyClass) PrintInfo() { // 函数头为:func (mc *MyClass) PrintInfo()也可以,传递参数的时候,一个传递值,一个传递值的引用 fmt.Printf("name = %s, age = %d\n", mc.name, mc.age) return}
func (mc *MyClass) SetAge(age uint8) { mc.age = age return}复制代码
划线
评论
复制
发布于: 47 分钟前阅读数: 3
版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/3597764f2386374843f1ed16c】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
HelloBug
关注
还未添加个人签名 2018.09.20 加入
还未添加个人简介











评论