Pregunta Encuadernaciones de cacao para el lenguaje Go


¿Es posible escribir aplicaciones Mac OS X / Cocoa en Google Go?

¿Hay un puente Go-Obj-C? (Me parece que el dinamismo Obj-C sería una gran opción para las interfaces de Golang)

¿Al menos puedo unir los dos y hacer que se comuniquen entre sí a través de las funciones simples de C?


32
2018-06-12 13:25


origen


Respuestas:


Puedes echar un vistazo a la publicación de mi blog como ejemplo. Me temo que no seguí trabajando en eso, pero aquí está el código fuente eso puede ayudarte a configurar un proyecto de Cocoa / ObjC / Go desnudo.

Podrás hacer algo como esto, como se menciona en el archivo 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()
}

1
2018-03-02 14:38



CGo es lo que le permite llamar al código C.

Ver el CGo doc y el informativo, publicación oficial en el blog.

Parece que todavía no hay enlaces / bibliotecas de cacao, pero es posible que desee verificar Paquete GTK para referencia.


11
2018-06-12 13:58



En este momento no parece haber un paquete para enlazar Cocoa to Go. Cocoa está escrito en Objective-C, que es un superconjunto de C. Los mensajes de Objective-C son (o al menos solían ser, no están seguros de los compiladores modernos) traducidos a llamadas de función C por el compilador, a algo como esto:

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

Por lo tanto, definitivamente es posible usar Cocoa de Go.

Si te encuentras con un problema en el que encuentras que te gustaría utilizar Cocoa en una aplicación Go, en mi humilde opinión dar un paso atrás y pensar en el problema que estás tratando de resolver. Cocoa hace un uso intensivo de los parámetros nombrados y los métodos pueden tener firmas bastante largas. Esto funciona bien en Objective-C pero dudo que el código se vea tan bien en Go. Por otro lado, Go resuelve otro conjunto de problemas. Tal vez escribir una biblioteca (lógica de aplicación) en el código Go y GUI en Objective-C / Cocoa haría el truco?

TL; DR: ¿Qué hay de escribir el modelo en Go y el código GUI en Objective-C?


9
2018-04-15 09:24