golang struct interface 方法
有一个结构体
type mystruct struct {
a int
}
如果想为这个结构体增加一个方法,就类似于C++或者Java的类一样,有成员变量,也有成员函数,怎么实现呢?由于go没有类的概念,所以提供了一种方案。
func (ms mystruct) test() int {
return ms.a
}
就是按照定义函数的方式,只不过在前面增加对应结构体或者接口的参数。这里就是定义了一个函数test(),返回值是int,对应的是mystruct结构体(mystruct中的方法),由于我们调用类的方法是都是实例化一个类,然后用类的实例进行调用。比如:
Class A {
void test() {
}
};
A a;
a.test();
所以go中方法前面的参数(ms mystruct)就表示在调用的时候,把当前的实例传递进来。一般我们会写成指针的形式,避免传递了形参,数据没有改变:
func (ms *mystruct) test() int {
return ms.a
}
具体使用如下
func main() {
var ms1 mystruct
ms1.a = 10
fmt.Println(ms1.test())
}
ms1.test()
就是调用func (ms *mystruct) test() int
函数,把自己传递进去,func (ms *mystruct) test() int
就是传递ms1的指针,func (ms mystruct) test() int
就是传递ms1的形参。
不过go的这个特性有个问题,不能很明显的知道结构体或者接口有哪些方法。当然也有一个好处就是灵活。
版权声明:本文版权归作者所有,如需转载,请标明出处
分类:
Golang
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏