英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论