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


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

    在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+" 执行了;
    ")
    }
    
    func main() {
    	class := Class{func(s string, i int, class Class) (string, int) {
    		return s+class.signalString+"-yes
    ", 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类型的属性归根到底还是属性,不是方法,这个还是有根本区别的。

  • 相关阅读:
    探索Javascript 异步编程
    前端性能调优
    怎样选择前端框架
    前端地图截屏方案
    不一样的山顶角
    前后端分离场景下的另类登录认证方案
    React Diff 算法
    纯css实现Magicline Navigation(下划线动画导航菜单)
    Tinymce group plugin
    自适应process组件
  • 原文地址:https://www.cnblogs.com/haiton/p/14846463.html
Copyright © 2020-2023  润新知