是否可以在Google Go中编写Mac OS X / Cocoa应用程序?
是否有Go-Obj-C桥? (在我看来,Obj-C的动态非常适合Golang的界面)
我是否至少可以将两者连接在一起并通过普通的C函数让它们相互通信?
答案 0 :(得分:11)
答案 1 :(得分:9)
现在似乎没有一个用于将Cocoa绑定到Go的包。 Cocoa是用Objective-C编写的,它是C的超集。目标-C消息是(或至少用于,不确定现代编译器)由编译器转换为C函数调用,如下所示:
objc_msgSend(object, sel_getUid("foo:bar:err:"), var, var2, errVar);
因此,绝对可以使用Go中的Cocoa。
如果你遇到一个问题,你发现你想在Go应用程序中使用Cocoa,恕我直言退后一步,想一想你要解决的问题。 Cocoa大量使用命名参数,方法可以有很长的签名。这在Objective-C中运行良好,但我怀疑代码在Go中看起来不错。另一方面,Go解决了另一组问题。也许在Objective-C / Cocoa中用Go和GUI代码编写一个库(应用程序逻辑)可以解决这个问题吗?
TL; DR:如何在Objective-C中使用Go和GUI代码编写模型?
答案 2 :(得分:2)
您可以查看my blog post as an example。我担心我没有继续努力,但是这里the source code可以帮助你建立一个简单的Cocoa / ObjC / Go项目。
你可以像README中提到的那样做这样的事情。
package main
import (
"github.com/alediaferia/gogoa"
)
func main() {
app := gogoa.SharedApplication()
window := gogoa.NewWindow(0, 0, 200, 200)
window.SetTitle("Gogoga!")
window.MakeKeyAndOrderFront()
app.Run()
}