zoukankan      html  css  js  c++  java
  • 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类型的属性归根到底还是属性,不是方法,这个还是有根本区别的。

  • 相关阅读:
    curl
    jQuery监控键盘事件
    SSL证书及HTTPS服务器
    小程序中接入微信支付完整教程
    微信小程序 icon组件详细介绍
    十步解决php utf-8编码
    php正则表达式过滤空格 换行符 回车
    css单位介绍em ex ch rem vw vh vm cm mm in pt pc px
    JavaScript返回上一页并自动刷新
    php的header函数之设置content-type
  • 原文地址:https://www.cnblogs.com/haiton/p/14846463.html
Copyright © 2011-2022 走看看