Maison >développement back-end >Golang >Comment créer des applications Mac simples à l'aide de Go
J'ai lancé DarwinKit il y a quelques années car il n'y avait aucune liaison avec les API Mac natives pour Go. Nous avons lentement transformé le projet en outils de liaison et de génération pour atteindre un jour une couverture complète de toutes les API Apple. La sortie de la v0.5.0 la semaine dernière est la plus importante que le projet ait connue :
Voici un exemple rapide utilisant DarwinKit pour créer une application native de fenêtre d'affichage Web en quelques lignes de Go :
package main import ( "github.com/progrium/darwinkit/objc" "github.com/progrium/darwinkit/macos" "github.com/progrium/darwinkit/macos/appkit" "github.com/progrium/darwinkit/macos/foundation" "github.com/progrium/darwinkit/macos/webkit" ) func main() { // runs macOS application event loop with a callback on success macos.RunApp(func(app appkit.Application, delegate *appkit.ApplicationDelegate) { app.SetActivationPolicy(appkit.ApplicationActivationPolicyRegular) app.ActivateIgnoringOtherApps(true) url := foundation.URL_URLWithString("https://github.com/sponsors/darwinkitdev") req := foundation.NewURLRequestWithURL(url) frame := foundation.Rect{Size: foundation.Size{1440, 900}} config := webkit.NewWebViewConfiguration() wv := webkit.NewWebViewWithFrameConfiguration(frame, config) wv.LoadRequest(req) w := appkit.NewWindowWithContentRectStyleMaskBackingDefer(frame, appkit.ClosableWindowMask|appkit.TitledWindowMask, appkit.BackingStoreBuffered, false) objc.Retain(&w) w.SetContentView(wv) w.MakeKeyAndOrderFront(w) w.Center() delegate.SetApplicationShouldTerminateAfterLastWindowClosed(func(appkit.Application) bool { return true }) }) }
En moins de 40 lignes, nous avons créé une application Mac native sans ouvrir XCode ni utiliser Objective-C. Je pense que cela pourrait désormais être le meilleur projet de liaison existant pour les API Apple. Peut-être même le meilleur moyen de créer de petits utilitaires sur Mac. Et bientôt même d'autres appareils Apple.
Il manque une grande pièce à DarwinKit : il n'y a aucune liaison avec les fonctions du framework Apple. Heureusement, la plupart des frameworks sont construits avec la POO, pour laquelle nous disposons d'excellentes liaisons pour le moment. Mais certains frameworks, notamment les frameworks de niveau inférieur, sont pour la plupart des fonctions. Bien qu'il existe une solution de contournement qui implique l'utilisation de CGO (que DarwinKit essaie de vous aider à éviter), nous travaillons sur la génération de liaisons de fonctions Go natives pour chaque fonction du framework.
L'autre grand objectif sur lequel nous travaillons est de faire en sorte que DarwinKit n'utilise pas du tout CGO ! En utilisant purego, nous pouvons faire appel aux frameworks Apple sans impliquer CGO. Cela améliorera le temps de construction, créera des binaires plus petits et permettra à DarwinKit d'être utilisé dans des programmes qui doivent éviter CGO pour une raison quelconque.
Pour les développeurs iOS et mobiles, je veux vraiment que cela fonctionne pour iOS. En fait, cela devrait déjà être le cas ! Mais nous générons des liaisons pour MacOS pour l'instant. Si quelqu'un souhaite nous aider à intégrer cette fonctionnalité sur iOS pour permettre aux utilisateurs de créer des applications mobiles Apple avec Go, n'hésitez pas à nous contacter !
En attendant, essayez de créer une application avec ce que nous avons jusqu'à présent. Faites-moi savoir comment ça se passe !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!