溫馨提示×

golang接口斷言的使用方法是什么

小億
74
2023-10-23 11:11:31
欄目: 編程語言

在Go中,接口斷言是一種將接口類型的值轉換為其他具體類型的方法。接口斷言可以使用類型斷言表達式來進行,其語法為:

value, ok := interfaceValue.(Type)

其中,interfaceValue 是一個接口類型的值,Type 是希望將其轉換為的具體類型。

接口斷言返回兩個值,valueok。如果接口值的動態(tài)類型與斷言的類型匹配,則value 會是該具體類型的值,而ok 會是 true 。如果斷言失敗,value 會是該具體類型的零值,而 ok 會是 false 。

下面是一個使用接口斷言的示例:

package main

import "fmt"

type Shape interface {
    Area() float64
}

type Circle struct {
    radius float64
}

func (c Circle) Area() float64 {
    return 3.14 * c.radius * c.radius
}

func main() {
    var s Shape
    c := Circle{radius: 5}
    s = c

    if circle, ok := s.(Circle); ok {
        fmt.Println("Circle area:", circle.Area())
    } else {
        fmt.Println("Not a circle")
    }
}

在上述代碼中,我們定義了一個 Shape 接口和一個實現(xiàn)了 Shape 接口的 Circle 結構體。在 main 函數(shù)中,我們將 Circle 結構體的實例賦值給 Shape 接口類型的變量 s 。然后,我們使用接口斷言來判斷 s 是否是一個 Circle 類型的值,并調用 Circle 結構體的 Area 方法來計算面積。

如果接口斷言成功,我們打印出圓的面積;否則,打印出“Not a circle”。

0