Peut-on déclarer une interface avec des champs en Go, comme en Java/C# ?
Bonjour à tous ! Je suis débutant en Go, je viens de Java. Là-bas, j'avais l'habitude qu'une interface puisse contenir non seulement des signatures de méthodes, mais aussi des champs (propriétés). Par exemple :
```java
public interface Animal {
String name = "Unknown";
void speak();
}
```
Maintenant, j'essaie de faire la même chose en Go :
```go
type Animal interface {
Name string
Speak()
}
```
Le compilateur renvoie une erreur : `interface contains embedded field Name which is not a method`. Je suis perplexe. Comment décrire correctement en Go une structure qui garantit qu'elle contient certains champs ? J'ai besoin que tout objet implémentant l'interface `Animal` ait obligatoirement un champ `Name` (une chaîne). Sans cela, mon programme échoue à la compilation.
J'ai essayé de faire ceci :
```go
type Animal struct {
Name string
}
type Dog struct {
Animal
Speak()
}
```
Mais cela ne fonctionne pas non plus. Veuillez m'indiquer, s'il vous plaît, comment organiser correctement en Go un contrat pour la présence d'un champ. Peut-être que je ne comprends tout simplement pas la