關於介面實現的一個小問題
type geometry interface {
area() float64
perim() float64
}
type rect struct {
width, height float64
}
type circle struct {
radius float64
}
func (r rect) area() float64 {
return r.width * r.height
}
func (r rect) perim() float64 {
return 2*r.width + 2*r.height
}
func (c *circle) area() float64 {
return math.Pi * c.radius * c.radius
}
func (c *circle) perim() float64 {
return 2 * math.Pi * c.radius
}
func measure(g geometry) {
fmt.Println(g)
fmt.Println(g.area())
fmt.Println(g.perim())
}
r := rect{3, 4}
c := circle{5}
measure(r)
measure(&c) //如果這樣寫 measure(c)就不行,也就是說c沒有實現相應的介面,報錯。必須 傳地址進去,意思是&c 實現了介面。
看下面程式碼:
var cc circle= circle{6}
var ccptr *circle= &cc
fmt.Println(cc.area())
fmt.Println(ccptr.area())
fmt.Println(cc)
既然編譯器可以聰明的在適當的時候進行取地址 和 指標解引用 ,為何在介面這裡就不行了呢?為什麼要區分這麼嚴格呢?
謝謝。
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 關於教程的一個問題
- 關於介面的一些問題
- 關於 http cache 的一個小問題以及引發的思考HTTP
- 我來提個關於Iterator的小問題
- 關於Integer面試的一個問題面試
- 一個關於Java Excel的問題JavaExcel
- 一個關於SessionBean呼叫的問題。SessionBean
- 一個關於prototype模式的問題?模式
- 關於 /dev/null 差點直播吃鞋的一個小問題devNull
- 提個小問題--關於jdbc事務JDBC
- 問一個關於hibernate的OracleDialect問題Oracle
- 一個關於JAVA GC的小實驗JavaGC
- 關於一個歸檔問題?
- 關於CSS中的float可能出現的小問題CSS
- 求助關於JdonFrameworkTest的一個問題Framework
- 關於系統效能的一個問題
- 一個關於jdbc2的問題JDBC
- 關於jdbc的一個問題,高手解惑JDBC
- 關於抽象工廠的一個問題?抽象
- 爭用!!!!一個關於JDBC的問題!JDBC
- 關於singleton模式的一個問題?模式
- 碰到一個棘手的問題——關於httpclient。HTTPclient
- 關於微信小程式swiper的問題微信小程式
- 一個一直困惑的關於jdbc in 的問題JDBC
- Elasticsearch中關於transform的一個問題分析ElasticsearchORM
- 關於vue事件監聽的一個問題Vue事件
- 關於desc的一個奇怪問題及分析
- 一個關於/root/.gvfs的問題解決?
- 一個關於java.net.URL的問題.Java
- 一個關於值傳遞呼叫的問題
- 關於Chain of Responsibility模式的一個問題AI模式
- 關於是否需要同步的一個問題?
- 一個小問題
- 請問老師一個關於命令模式的問題模式
- 問一個關於oracle8的簡單的問題!Oracle
- 請問一個關於web的管理系統的問題Web
- Python關於使用subprocess.Popen時遇到的一個小問題記錄Python
- 關於c#實現影音嗅探的問題C#