将类型变量传入函数

时间:2016-11-30 18:44:36

标签: go type-conversion type-assertion

我正在尝试通过将类型传入函数来实现类型断言。换句话说,我正在努力实现这样的目标:

// Note that this is pseudocode, because Type isn't the valid thing to use here
func myfunction(mystring string, mytype Type) {
    ...

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

    ...  // Do other stuff
}

func main() {
    // What I want the function to be like
    myfunction("hello world", map[string]string)
}

我需要在myfunction中使用哪个正确的函数声明才能在myfunction中成功执行类型断言?

1 个答案:

答案 0 :(得分:5)

@ hlin117,

嘿,如果我正确理解你的问题并且你需要比较类型,那么你可以做什么:

package main

import (
    "fmt"
    "reflect"
)

func myfunction(v interface{}, mytype interface{}) bool {
    return reflect.TypeOf(v) == 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)

}

方法是使用您想要匹配的类型的样本。