https://pkg.go.dev/github.com/godbus/dbus#Conn.Export
func (conn *Conn) Export(v interface{}, path ObjectPath, iface string) error
如果接收到给定路径和接口上的方法调用,则如果参数匹配且最后返回值的类型为*Error,则使用v作为接收器调用具有相同名称的导出方法。如果这个*错误不是nil,它将作为错误发送回调用者。否则,将发送一个方法应答,并将其他返回值作为其主体。
程序通过
f
foo
到
conn.Export
.
福
具有与所述模式匹配的方法:
func (f foo) Foo() (string, *dbus.Error)
string(f)
. (
"Bar!"
空select语句
select {}
最后是一个我从未见过的聪明的把戏。它只是一个永远阻挡的语句。你可以阅读更多关于它的文章
this question
. 它在这里只是用来阻止
main
考虑到这个空选择是一个“聪明的把戏”,最好用一个简单的注释来解释:
// Blocks forever
select {}
Export
方法很神奇。它接受一个名称模糊的空接口值,并根据一些可能使用反射的内部进程来确定如何处理它。除非您阅读了函数的文档,否则很难猜测它会做什么。