我有兩個關於下面的代碼中的Go接口的問題。轉:接口方法調用
type Color interface {
getColor() string
setColor(string)
}
type Car struct {
color string
}
func (c Car) getColor() string {
return c.color
}
func (c Car) setColor(s string) {
c.color = s
}
func main() {
car := Car{"white"}
col := Color(car)
car = col.(Car) // L(1)
car.setColor("yellow")
fmt.Println(col) // L(2)
fmt.Println(car)
car.color = "black"
fmt.Println(col) // L(3)
fmt.Println(car)
}
Q1:它是確定寫L(1) as "car, _ := col.(Car)"?
Q2:L(2)
打印 「白」 不 「黃」。
爲什麼? L(3)
似乎正確地打印「黑色」。
謝謝。
'setColor'不會做你認爲它做的事。你應該讓'c'(接收器)一個*指針*給一輛車。 – MatrixFrog