首頁 >後端開發 >Golang >如何在 Go 中使用函數參數進行型別斷言?

如何在 Go 中使用函數參數進行型別斷言?

Patricia Arquette
Patricia Arquette原創
2024-11-02 00:18:02722瀏覽

How to Perform Type Assertion with Function Parameters in Go?

透過函數參數進行型別斷言

在嘗試執行型別斷言時,您試圖將特定型別傳遞到函式中。具體來說,您的目標是實現一個函數聲明,使您能夠斷言地匹配所提供的類型,如下面的假設函數所示:

// Note: Type isn't a valid type to use in Go
func myfunction(mystring string, mytype Type) {
    ...

    someInterface := translate(mystring)
    object, ok := someInterface.(mytype)

    ...  // Do other stuff
}

要在myfunction 中成功實現類型斷言,您應該修改函數接受mytype 的interface{} 參數的宣告。以下是實現此目的的方法:

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}

此方法利用 Reflect 套件將 v 參數的類型與提供的 mytype 介面進行比較。它傳回一個布林值,指示類型是否匹配。

這是一個示範如何使用此函數的範例:

package main

import (
    "fmt"
    "reflect"
)

func main() {

    assertNoMatch := myfunction("hello world", map[string]string{})

    fmt.Printf("%+v\n", assertNoMatch)

    assertMatch := myfunction("hello world", "stringSample")

    fmt.Printf("%+v\n", assertMatch)

}

在此範例中,myfunction 正確決定是否提供的值與指定的類型相符並相應地傳回布林值。

以上是如何在 Go 中使用函數參數進行型別斷言?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn