Avatar ·

¿Se puede declarar una interfaz con campos en Go, como en Java/C#?

¡Hola a todos! Soy nuevo en Go, vengo de Java. Allí estaba acostumbrado a que una interfaz puede contener no solo firmas de métodos, sino también campos (propiedades). Por ejemplo: ```java public interface Animal { String name = "Unknown"; void speak(); } ``` Ahora intento hacer lo mismo en Go: ```go type Animal interface { Name string Speak() } ``` El compilador da un error: `interface contains embedded field Name which is not a method`. Estoy desconcertado. ¿Cómo se describe correctamente en Go una estructura que garantice que contiene ciertos campos? Necesito que cualquier objeto que implemente la interfaz `Animal` tenga obligatoriamente un campo `Name` (cadena). Sin esto, mi programa se rompe en la etapa de compilación. Intenté hacerlo así: ```go type Animal struct { Name string } type Dog struct { Animal Speak() } ``` Pero tampoco funciona. Por favor, indíquenme cómo organizar correctamente en Go un contrato para la presencia de un campo. ¿Quizás simplemente estoy escribiendo mal?