Avatar ·

是否可以在Go中像Java/C#那样声明带有字段的接口?

大家好!我是Go新手,从Java转过来。在Java中,我习惯接口不仅可以包含方法签名,还可以包含字段(属性)。例如: ```java public interface Animal { String name = "Unknown"; void speak(); } ``` 现在尝试在Go中做同样的事情: ```go type Animal interface { Name string Speak() } ``` 编译器报错:`interface contains embedded field Name which is not a method`。我很困惑。那么在Go中如何正确描述一个保证包含特定字段的结构?我需要任何实现`Animal`接口的对象都必须有`Name`字段(字符串)。没有这个,我的程序在编译阶段就会崩溃。 我尝试过这样做: ```go type Animal struct { Name string } type Dog struct { Animal Speak() } ``` 但这也不起作用。请告诉我,在Go中如何正确组织对字段存在的契约?也许我只是写法不对。