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?