我有两个关于以下代码中的 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)似乎正确打印“黑色”。
哆啦的时光机
相关分类