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类型的属性归根到底还是属性,不是方法,这个还是有根本区别的。

  • 相关阅读:
    .globl分析
    ARM汇编指令
    汇编文件后缀.s与.S
    Uboot命令
    BIOS、BootLoader、uboot对比
    汇编的WEAK关键字
    USB OTG
    前端学习笔记——CSS选择器
    前端学习笔记——HTML
    【1】python模块:自定义模块的3种导入方式
  • 原文地址:https://www.cnblogs.com/haiton/p/14846463.html
Copyright © 2011-2022 走看看