Pourquoi ne pas définir CGO_ENABLED=0 comme valeur par défaut pour les binaires Go ?
Par défaut, CGO_ENABLED est défini sur 1 dans Go. Cela signifie que les binaires Go peuvent être liés dynamiquement aux bibliothèques natives, telles que celles fournies par GLIBC. Cela peut conduire à des builds et des durées d'exécution plus rapides et plus petits.
Cependant, l'utilisation de CGO présente également certains inconvénients, notamment le risque de rupture de modifications entre les mises à jour et les distributions de GLIBC. De plus, les binaires compatibles CGO peuvent ne pas être portables sur différentes plates-formes.
Alors pourquoi CGO_ENABLED=0 n'est-il pas la valeur par défaut ? Il y a plusieurs raisons :
Comportement de la bibliothèque standard
Le comportement de certaines fonctions de bibliothèque standard peut également différer selon que CGO est activé ou non. Par exemple :
Considérations sur le déploiement
Bien que les binaires CGO_ENABLED=1 puissent être plus petits, ils nécessitent également le déploiement d'un système d'exploitation hôte. Cela peut ajouter une taille et une complexité considérables au processus de déploiement. Les binaires CGO_ENABLED=0, en revanche, peuvent être déployés sans aucune dépendance sur des bibliothèques externes.
Conclusion
La décision d'activer ou non CGO dépend de les exigences spécifiques de votre programme Go. Si vous utilisez principalement la bibliothèque standard et n'avez pas besoin d'accéder au code natif, alors CGO_ENABLED=0 est une bonne option. Sinon, CGO_ENABLED=1 peut offrir des avantages en termes de performances et de commodité pour le développement local.
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!