栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

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

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

学习笔记,写到哪是哪。

可以对自定义结构体或者内置类型结构体,添加方法,方法可接收结构体指针。这种写法让我思考了一下项目结构问题,如果是这样的话,是不是把结构体都先放到一个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 -> %sn", p.name, p.age, a)
}

func (p Person) print1(a string) {
	p.name = "小黄"
	fmt.Printf("person name=%s,age=%d -> %sn", 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=%vn", 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,就可以在使用原内置结构体方法的同时,加上自定义的方法,这个功能还是很好用的。

小结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号