Avatar ·

É possível declarar uma interface com campos em Go, como em Java/C#?

Olá a todos! Sou novo em Go, vindo do Java. Lá, estou acostumado que uma interface pode conter não apenas assinaturas de métodos, mas também campos (propriedades). Por exemplo: ```java public interface Animal { String name = "Unknown"; void speak(); } ``` Agora estou tentando fazer o mesmo em Go: ```go type Animal interface { Name string Speak() } ``` O compilador retorna um erro: `interface contains embedded field Name which is not a method`. Estou perplexo. Como então descrever corretamente em Go uma estrutura que garanta que contenha determinados campos? Preciso que qualquer objeto que implemente a interface `Animal` tenha obrigatoriamente um campo `Name` (string). Sem isso, meu programa quebra em tempo de compilação. Tentei fazer assim: ```go type Animal struct { Name string } type Dog struct { Animal Speak() } ``` Mas também não funciona. Por favor, me digam como organizar corretamente em Go um contrato para a existência de um campo? Talvez eu esteja apenas fazendo errado.