小编Tgi*_*day的帖子

Go:接口方法调用

我从以下代码有两个关于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)
}
Run Code Online (Sandbox Code Playgroud)

Q1:写得好吗 L(1) as "car, _ := col.(Car)"?

Q2:L(2)打印"白色"而不是"黄色".

为什么?L(3)似乎正确打印"黑色".

谢谢.

go

5
推荐指数
2
解决办法
6095
查看次数

标签 统计

go ×1