当前位置:网站首页>Go從入門到實戰——接口(筆記)

Go從入門到實戰——接口(筆記)

2022-06-27 21:37:00 積澱 ytu

Java接口

在這裏插入圖片描述

Go接口

在這裏插入圖片描述

type Mover interface {
    
	move()
}

type dog struct {
    }

func (d dog) move() {
    
	fmt.Println("狗會動")
}

func main() {
    
	var x Mover
	var wangcai = dog{
    } // 旺財是dog類型
	x = wangcai         // x可以接收dog類型
	var fugui = &dog{
    }  // 富貴是*dog類型
	x = fugui           // x可以接收*dog類型
	x.move()
}

從上面的代碼中我們可以發現,使用值接收者實現接口之後,不管是dog結構體還是結構體指針*dog類型的變量都可以賦值給該接口變量。因為Go語言中有對指針類型變量求值的語法糖,dog指針 fugui 內部會自動求值*fugui

func (d *dog) move() {
    
	fmt.Println("狗會動")
}
func main() {
    
	var x Mover
	var wangcai = dog{
    } // 旺財是dog類型
	x = wangcai         // x不可以接收dog類型
	var fugui = &dog{
    }  // 富貴是*dog類型
	x = fugui           // x可以接收*dog類型
}

此時實現Mover接口的是*dog類型,所以不能給x傳入dog類型的wangcai,此時x只能存儲*dog類型的值。
在這裏插入圖片描述

接口變量

在這裏插入圖片描述

自定義類型

在這裏插入圖片描述

原网站

版权声明
本文为[積澱 ytu]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/06/202206271921594139.html