将类型变量传递给函数

Posted

技术标签:

【中文标题】将类型变量传递给函数【英文标题】:Passing in a type variable into function 【发布时间】:2017-04-15 05:18:23 【问题描述】:

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

// 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】:

@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)


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

【讨论】:

以上是关于将类型变量传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

问题将模板类型传递给函数并用于局部变量赋值 c++

Python - 如何传递给类对象的函数参数类型(打字)

可以将任何原始类型传递给需要指针的函数吗?

返回引用类型的返回引用的好处

将绑定传递给类型属性包装器的变量 - 失去基础类型

在 GraphQL Mutate 函数中将 ID 作为正确的变量类型传递