在嘗試執行型別斷言時,您試圖將特定型別傳遞到函式中。具體來說,您的目標是實現一個函數聲明,使您能夠斷言地匹配所提供的類型,如下面的假設函數所示:
// 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中文網其他相關文章!