Présentation de Go Mobile

L'utilisation de Go pour les applications mobiles est une approche intéressante, notamment pour les applications cross-platform. L'auteur de l'article a choisi Go Mobile pour son application Digital Carrot en raison de sa capacité à compiler et exécuter du code partout, ainsi que pour sa bibliothèque de fonctionnalités système solide.

Fonctionnement de Go Mobile

Go Mobile est utilisé pour la logique métier de Digital Carrot, tandis que Flutter est utilisé pour l'interface utilisateur. Les appels API sont effectués à l'aide de messages Protobuf, qui permettent de travailler avec des structures de données agréables en Go et en Dart sans avoir à effectuer de marshalling et de démarshalling JSON manuels.

// Exemple de définition d'un message Protobuf
message CarrotAPI {
  oneof api {
    // Appel API pour créer un nouvel utilisateur
    CreateUserRequest create_user = 1;
    // Appel API pour récupérer les informations d'un utilisateur
    GetUserRequest get_user = 2;
  }
}

Communication entre Go et les plateformes

La communication entre Go et les plateformes (Swift, Kotlin) est effectuée à l'aide d'interfaces Go qui sont implémentées sur le côté de la plateforme. Les interfaces ne supportent que les types de données primitifs, ce qui peut limiter leur utilisation.

// Exemple d'interface Go pour la communication avec la plateforme
type PlatformInterface interface {
  // Méthode pour envoyer un message à la plateforme
  SendMessage(message string) error
}

Avantages et inconvénients de l'approche

L'utilisation de Go pour les applications mobiles présente plusieurs avantages, tels que la facilité d'intégration avec le serveur, la séparation claire entre la logique métier et la présentation, ainsi que l'accès à une large collection de bibliothèques. Cependant, cette approche peut également présenter des inconvénients, tels que la complexité de la communication entre Go et les plateformes.