1. 程式人生 > >測試一個值是否實現了某個介面

測試一個值是否實現了某個介面

假定 v 是一個值,然後我們想測試它是否實現了 Stringer 介面,可以這樣做:

type Stringer interface {
    String() string
}

if sv, ok := v.(Stringer); ok {
    fmt.Printf("v implements String(): %s\n", sv.String()) // note: sv, not v
}
Print 函式就是如此檢測型別是否可以列印自身的。

介面是一種契約,實現型別必須滿足它,它描述了型別的行為,規定型別可以做什麼。介面徹底將型別能做什麼,以及如何做分離開來,使得相同介面的變數在不同的時刻表現出不同的行為,這就是多型的本質。

編寫引數是介面變數的函式,這使得它們更具有一般性。

使用介面使程式碼更具有普適性。

標準庫裡到處都使用了這個原則,如果對介面概念沒有良好的把握,是不可能理解它是如何構建的。

在接下來的章節中,我們會討論兩個重要的例子,試著去深入理解它們,這樣你就可以更好的應用上面的原則。

轉載地址