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-07-16 19:24:36 +08:00 via iPhone
类似函数指针,很多地方用
|
2
Mark24 2022-07-16 19:35:40 +08:00
Golang 不懂。
动态语言里面,可以“裁剪”方法。 以动态性很高的 Ruby 为例:可以通过 method 获得任意对象方法的指针。 方法本质上就是可以被复用的逻辑。如果方法可以被“裁剪” 就可以在需要他的地方使用。非常灵活。 |
3
BeautifulSoap 2022-07-16 19:55:35 +08:00 via Android
|
4
pastor 2022-07-17 13:25:20 +08:00
看样子像是:类方法如果不是通过对象实例调用,则首个参数作为对象实例,其他一些语言有类似的
|
5
lysS 2022-07-27 10:19:07 +08:00
type S struct{}
func (s S) A(x int) {} func main() { var method = (S{}).A method(1) } 还有这样呢 |
6
kkeep 2022-07-30 19:31:16 +08:00
不是,你这能编译通过么?
interface { A() } 这里面 A 是哪来的 |
7
kkeep 2022-07-30 19:34:55 +08:00
我的,有意思,是临时定义了一个 interface
var IA interface { A() } var ai IA var method = ai.A |
8
kkeep 2022-07-30 19:38:21 +08:00
(有一说一,第一次见这种用法, 有点意思 https://go.dev/play/p/Qrabk1b7WI3
|
9
voidmnwzp 2022-08-22 12:51:59 +08:00 via iPhone
interface.a 相当于
func (impl interface{A()}){ impl.A()} |