
package main import "fmt" type a int func (a) A() { fmt.Println("a") } func main() { var method = interface{ A() }.A var aa a = 1 method(aa) } 其中 method 的类型是 func(interface{A()})
暂时不清楚这个操作的意义在哪
1 lloovve 2022 年 7 月 16 日 via iPhone 类似函数指针,很多地方用 |
2 Mark24 2022 年 7 月 16 日 Golang 不懂。 动态语言里面,可以“裁剪”方法。 以动态性很高的 Ruby 为例:可以通过 method 获得任意对象方法的指针。 方法本质上就是可以被复用的逻辑。如果方法可以被“裁剪” 就可以在需要他的地方使用。非常灵活。 |
3 BeautifulSoap 2022 年 7 月 16 日 via Android |
4 pastor 2022 年 7 月 17 日 看样子像是:类方法如果不是通过对象实例调用,则首个参数作为对象实例,其他一些语言有类似的 |
5 lysS 2022 年 7 月 27 日 type S struct{} func (s S) A(x int) {} func main() { var method = (S{}).A method(1) } 还有这样呢 |
6 kkeep 2022 年 7 月 30 日 不是,你这能编译通过么? interface { A() } 这里面 A 是哪来的 |
7 kkeep 2022 年 7 月 30 日 我的,有意思,是临时定义了一个 interface var IA interface { A() } var ai IA var method = ai.A |
8 kkeep 2022 年 7 月 30 日 (有一说一,第一次见这种用法, 有点意思 https://go.dev/play/p/Qrabk1b7WI3 |
9 voidmnwzp 2022 年 8 月 22 日 via iPhone interface.a 相当于 func (impl interface{A()}){ impl.A()} |