首頁  >  文章  >  後端開發  >  如何透過將類型變數傳遞到 Go 中的函數來斷言類型?

如何透過將類型變數傳遞到 Go 中的函數來斷言類型?

DDD
DDD原創
2024-11-01 08:37:31510瀏覽

How can I assert a type by passing a type variable into a function in Go?

透過將類型變數傳遞到函數中進行類型斷言

正如您所提到的,您的目標是透過將類型變數合併到功能。為了實現這一點,讓我們深入研究 myfunction 的適當函數聲明,以促進類型斷言:

func myfunction(mystring string, mytype interface{}) bool {
    ...
}

在此聲明中:

  • mystring 仍然是字串參數。
  • 然而,
  • mytype 已修改為 interface{}。這表示 myfunction 將接受任何類型的值。

在 myfunction 中:

  1. 使用 Reflect.TypeOf() 來決定傳遞的 mystring 的類型。
  2. 利用reflect.TypeOf()來判斷mytype的類型。
  3. 如果兩種類型匹配,則返回true;

範例實作:

package main

import (
    "fmt"
    "reflect"
)

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

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 作為第二個參數,它將評估mystring 是否與該類型匹配類型,為類型斷言提供寶貴的靈活性。

以上是如何透過將類型變數傳遞到 Go 中的函數來斷言類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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