Go方法是一等函数吗?

huangapple go评论81阅读模式
英文:

Are Go methods first class functions?

问题

标题基本上已经说明了一切..

我能在运行时创建一个返回另一个Go方法的Go方法吗?一个简单的例子:

type Person struct {
    name string
    age uint
}

func (p Person) createGetNameMethod() /*返回类型是Person的方法*/ {
    return /*在这里返回一个新的匿名方法给Person*/
}
英文:

The title basically says it all..

Can I create a Go method that returns another Go method, at runtime? A simple example:

type Person struct {
	name string
	age uint
}

func (p Person) createGetNameMethod() /*return signature is a method for Person*/ {
	return /*return a new anonymous method here for Person*/
}

答案1

得分: 6

Go方法是一等函数吗?

是的,它们是一等函数。

我可以创建一个返回另一个Golang方法的Golang方法吗?

当然可以。

我可以返回一个新的匿名方法吗?

不可以,当然不行。

方法集在编译时确定。方法本身是普通的一等函数,但不能在运行时更改或创建:

  • 你可以返回方法集中已存在的方法,但不能添加一个新的方法到方法集中。

  • 反射可以实现类似的功能,但不适用于你的情况。

英文:

> Are Go methods first class functions?

Yes, they are.

> Can I create a Golang method that returns another Golang method [...]?

Yes, of course.

> [Can I] return a new anonymous method [?]

No, of course not.

The set of methods is determined at compile time. Methods are normal, first class functions, but they cannot be changed or created during runtime:

  • You can return a method that exists in the method set, but you cannot add one to the method set.

  • Reflection allows something like that but not in your case.

huangapple
  • 本文由 发表于 2022年1月13日 14:06:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/70692126.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定