Cocoa привязки для языка Go

Можно ли писать приложения MacOS/Cocoa в Google Go?

Есть ли мост Go-Obj-C? (мне кажется, что динамизм Obj-C отлично подходит для интерфейсов Golang)

Могу ли я хотя бы связать их вместе и заставить их общаться друг с другом с помощью простых старых функций Си?

Ответ 1

Вы можете посмотреть мое сообщение в блоге в качестве примера. Боюсь, я не продолжал работать над этим, но здесь исходный код, который может помочь вам установить голый 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()
}

Ответ 2

CGo - это то, что позволяет вам вызывать код C.

Смотрите документ CGo и информативный,

Ответ 3

Прямо сейчас нет похожего пакета для привязки Cocoa to Go. Cocoa написан в Objective-C, который является надмножеством C. Objective-C сообщений (или, по крайней мере, используется, чтобы быть уверенными в современных компиляторах), переведенных на вызовы функций C компилятором, примерно так:

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

Так что определенно можно использовать Cocoa из Go.

Если вы столкнулись с проблемой, когда найдете, что вы хотите использовать Cocoa в приложении Go, IMHO сделайте шаг назад и подумайте о проблеме, которую вы пытаетесь решить. Cocoa сильно использует именованные параметры, и методы могут иметь довольно длинные подписи. Это хорошо работает в Objective-C, но я сомневаюсь, что код будет выглядеть так хорошо в Go. С другой стороны, Go решает другой набор проблем. Возможно, написать библиотеку (логику приложения) в коде Go и GUI в Objective-C/Cocoa сделает трюк?

TL; DR:. Как насчет написания модели в коде Go и GUI в Objective-C?