34

GoogleGoでmacOS/Cocoaアプリケーションを作成することは可能ですか?

Go-Obj-Cブリッジはありますか?(Obj-CのダイナミズムはGolangのインターフェースに最適だと私には思えます)

少なくとも2つをリンクして、昔ながらのC関数を介して相互に通信させることはできますか?

4

3 に答える 3

11

CGoは、Cコードを呼び出すことができるものです。

CGoドキュメントとそれに関する有益な公式ブログ投稿を参照してください。

まだココアバインディング/ライブラリはないようですが、参考のためにGTKパッケージをチェックすることをお勧めします。

于 2011-06-12T13:58:46.950 に答える
9

現在、CocoaをGoにバインドするためのパッケージはないようです。Cocoaは、CのスーパーセットであるObjective-Cで記述されています。Objective-Cメッセージは、コンパイラーによってC関数呼び出しに変換されます(または、少なくとも、最近のコンパイラーについてはよくわかりません)。

objc_msgSend(object, sel_getUid("foo:bar:err:"), var, var2, errVar);

したがって、GoのCocoaを使用することは間違いなく可能です。

GoアプリでCocoaを使用したいという問題が発生した場合、IMHOは一歩下がって、解決しようとしている問題について考えます。Cocoaは名前付きパラメーターを多用し、メソッドは非常に長いシグニチャーを持つことができます。これはObjective-Cでうまく機能しますが、コードがGoで同じように見えるとは思えません。一方、Goは別の一連の問題を解決します。たぶん、Goでライブラリ(アプリケーションロジック)を作成し、Objective-C / CocoaでGUIコードを作成することでうまくいくでしょうか?

TL; DR: Goでモデルを作成し、Objective-CでGUIコードを作成するのはどうですか?

于 2013-04-15T09:24:40.203 に答える
2

例として私のブログ投稿を見ることができます。作業を続けていなかったのではないかと思いますが、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()
}
于 2016-03-02T14:38:10.823 に答える