首页 > 编程语言 > 详细

Go 语言的func 匿名函数,func类型的属性

时间:2021-06-03 23:51:06      阅读:19      评论:0      收藏:0      [点我收藏+]

今天看了个源码,发现一个写法

在python里面是可以在类定义之外额外负值新的方法的,Go语言中,定义结构体struct的时候好像只能定义属性,方法要通过方法名前传入struct引用的方式来将方法和结构体绑在一起,从而实现类似于Java,python中类的形式。

但是能不能在定义结构体的时候就定义好方法呢,在这个源码里就看到了可行的实现方式,即通过匿名函数(其实就是定义func类型的属性,好理解)

package main

type Class struct {
	method func(string, int, Class) (string, int)
	signalString string
}

func (c *Class) Func() {
	print(c.signalString+" 执行了;\n")
}

func main() {
	class := Class{func(s string, i int, class Class) (string, int) {
		return s+class.signalString+"-yes\n", i+100
	}, "super"};
	signS, signI := class.method("got?", 12, class)
	class.Func()
	print(signS)
	print(signI)
}

  

执行后:

super 执行了;
got?super-yes
112

  

说白了都一样,可执行的属性也就是方法,go里面又没有this,只有struct参数,不同的地方在于定义方法可以不传调用者,使用func属性需要传入调用者,func类型的属性归根到底还是属性,不是方法,这个还是有根本区别的。

 

Go 语言的func 匿名函数,func类型的属性

原文:https://www.cnblogs.com/haiton/p/14846463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!