Go语言的Cocoa绑定

时间:2011-06-12 13:25:40

标签: cocoa go cocoa-bindings scripting-bridge

是否可以在Google Go中编写Mac OS X / Cocoa应用程序?

是否有Go-Obj-C桥? (在我看来,Obj-C的动态非常适合Golang的界面)

我是否至少可以将两者连接在一起并通过普通的C函数让它们相互通信?

3 个答案:

答案 0 :(得分:11)

CGo使您能够调用C代码。

请参阅CGo doc和内容丰富的official blog post on it

似乎还没有可可绑定/库,但您可能需要查看GTK package以供参考。

答案 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()
}