Junior — Middle
Est-il possible d'étendre la fonctionnalité d'un autre package dans le langage Go en ajoutant de nouvelles méthodes?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, il est impossible d’ajouter de nouvelles méthodes aux types définis dans un autre paquet si ces types ne sont pas déclarés dans votre paquet. Les méthodes ne peuvent être déclarées que pour des types définis dans le même paquet. Cette restriction est liée à la conception du langage et aide à éviter les conflits et les comportements imprévisibles.
Cependant, il est possible d’utiliser la composition ou de créer de nouveaux types enveloppants (wrappers) qui incluent le type d’un autre paquet et lui ajoutent leurs propres méthodes :
package mypkg
import "otherpkg"
type MyType struct {
otherpkg.ExternalType
}
func (m MyType) NewMethod() {
// fonctionnalité supplémentaire
}
Ainsi, l’extension de la fonctionnalité est possible via des wrappers, mais pas en ajoutant directement des méthodes aux types d’un autre paquet.