아직도 새로 워. 나는 as suggested here to my previous question 답을 구현하려고한다. 이 경우 동물 인터페이스와 동물 구조체가 있습니다. 각 동물을 반복 할 수 있기를 원합니다. & 언어를 구하십시오. 내가 포인터의 목록을 해봤지만 오류가 계속 "y.language 정의되지 않은 (유형 동물은 아무 필드 나 메소드 언어가 없습니다)"인터페이스 조각을 반복하는 방법은 무엇입니까?
package main
import "fmt"
type animal interface {
speak()
}
type dog struct{
language string
}
func (d *dog) speak() {
d.language = "woof"
}
var n = []animal{
&dog{},
}
func main() {
for _, w := range n{
x := &dog{}
fmt.Println(x)
x.speak()
fmt.Println(x.language) // this works
fmt.Println(w)
y := w
y.speak()
fmt.Println(y.language) // but this doesn't...why??
}
}
수정 # 1 : 만들려면 내 더 명확한 질문 : x : = & 개가 작동하지만 y : = w는 작동하지 않는 이유는 무엇입니까? 편집 # 2 : newbs 없음 사랑 (
컴파일 타임 오류 메시지는 절대적으로 옳습니다 : 인터페이스에는'speak()'만 있습니다. 인터페이스에 따르면 '동물'을 가지고 있으면 말할 수 있다는 것입니다. 그 언어를 얻으려고하는 것은 기술적 인면에서 예상 할 수 있습니다. 동물의'언어 '를 원한다면 인터페이스에'GetLanguage()'를 추가하는 방법이있을 수 있습니다. – dyoo
@CharlieTumahai : 어쩌면 내가 분명하지 않을 수 있습니다. 왜 x : = & dog {}는 작동 하나 y : = w는 작동하지 않습니까? –
@dyoo 목록을 사용하지 않으면 동물의 언어를 사용할 수 있습니다. http://play.golang.org/p/IwFEbkoOZk. 내 질문은 왜 x : = & dog {}가 작동하지만 y : = w는 작동하지 않는 것과 비슷합니까? –