É 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.
No answers yet.
Faça login para deixar uma resposta
Blogs