Go语学习笔记 - 结构体方法接收器 | 从零开始Go语言

Go语学习笔记 - 结构体方法接收器 | 从零开始Go语言,第1张

学习笔记,写到哪是哪。

可以对自定义结构体或者内置类型结构体,添加方法,方法可接收结构体指针。这种写法让我思考了一下项目结构问题,如果是这样的话,是不是把结构体都先放到一个gofile里面,要使用的时候引入就好了。如果结构体缺什么方法,可以直接加就行了。

样例代码如下

package main

import "fmt"

type Person struct {
	name string
	age  int
}

func (p *Person) print(a string) {
	fmt.Printf("person name=%s,age=%d -> %s\n", p.name, p.age, a)
}

func (p Person) print1(a string) {
	p.name = "小黄"
	fmt.Printf("person name=%s,age=%d -> %s\n", p.name, p.age, a)
}

type MyString string

func (myString MyString) isLarge() bool {
	return len(myString) > 10
}
func main() {
	var xm Person = Person{name: "小红", age: 10}
	xm.print("come on")
	xm.print1("come on now")
	fmt.Println(xm)
	var ms MyString = MyString("haha111122222")
	fmt.Printf("ms=%s,isLarge=%v\n", ms, ms.isLarge())
}

执行结果

person name=小红,age=10 -> come on
person name=小黄,age=10 -> come on now
{小红 10}                             
ms=haha111122222,isLarge=true 

注意 

1、可以看出结构体接收器如果是非指针处理的话,并不会修改原结构体对象的属性。在print1方法中,对属性name做了修改,但是在执行完print1后,可以看到对象的name属性还是小红。

2、可以对内置结构体进行别名定义MyString,就可以在使用原内置结构体方法的同时,加上自定义的方法,这个功能还是很好用的。

小结

还是要结合项目才能对结构体的使用有更多的体会,后面注意回顾。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/989603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存