如何将数组的泛型类型作为 Golang 中函数的参数

我是Golang的新手,我的问题是如何使函数接受泛型类型的参数。以下是我最近遇到的具体问题:


我定义了一个包含函数的结构


type TestArgs struct {

    name string

    ...

    customAssertForTypeA func(array []*pb.TypeA)

    customAssertForTypeB func(array []*pb.TypeB)

}


// Define the test case with TestArgs.

tests := []TestArgs{

        {

            name: "Test A",

            customAssertForTypeA: func(array []*pb.TypeA) {

                // Some code

            }

        },

        {

            name: "Test B",

            customAssertForTypeB: func(array []*pb.TypeB) {

                // Some code

            }

        },

}

我的问题是,如何使客户Assert函数接受泛型类型的参数?我看到一些类似的问题与解决方案,所以我尝试interface{}


customAssert func(array interface{})

它不起作用。


慕桂英546537
浏览 122回答 1
1回答

呼啦一阵风

类型断言(https://tour.golang.org/methods/15)是当你有一个并想要访问具体值时所需要的:interface{}type TestArgs struct {    name         string    customAssert func(interface{})}// Define the test case with TestArgs.tests := []TestArgs{    {        name: "Test A",        customAssert: func(param interface{}) {            // Some code            array, ok := param.([]*pb.TypeA)            if !ok {                t.Fatal("assertion error TypeA")            }            // use array        },    },    {        name: "Test B",        customAssert: func(param interface{}) {            // Some code            array, ok := param.([]*pb.TypeB)            if !ok {                t.Fatal("assertion error TypeB")            }            // use array        },    },}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go