为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建动态类型的变量

如何创建动态类型的变量

Go
汪汪一只猫 2022-05-18 13:38:45
我能够创建一个“样本”类型的变量“模型”,如下所示:type Sample struct {    Id   int    `jsonapi:"attr,id,omitempty"`    Name string `jsonapi:"attr,name,omitempty"`}var model Sample // created successfully我能够成功创建它,因为我已经知道结构类型(示例)。但是,当我尝试如下创建类似的变量“a”时,出现语法错误:package mainimport (    "fmt"    "reflect")type Sample struct {    Id   int    `jsonapi:"attr,id,omitempty"`    Name string `jsonapi:"attr,name,omitempty"`}func test(m interface{}) {    fmt.Println(reflect.TypeOf(m)) // prints 'main.Sample'    var a reflect.TypeOf(m) // it throws - syntax error: unexpected ( at end of statement}func main() {    var model Sample // I have created a model of type Sample    model = Sample{Id: 1, Name: "MAK"}    test(model)}请告知如何在 Go 中创建动态类型的变量。
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

package main


import (

    "fmt"

    "reflect"

)


type Sample struct {

    Id   int    `jsonapi:"attr,id,omitempty"`

    Name string `jsonapi:"attr,name,omitempty"`

}


func test(m interface{}) {

    fmt.Println(reflect.TypeOf(m)) // prints 'main.Sample'


    a, ok := m.(main.Sample)

    if ok {

        fmt.Println(a.Id)

    }

}


func main() {


    var model Sample // I have created a model of type Sample

    model = Sample{Id: 1, Name: "MAK"}

    test(model)

}

如果你想要更多的活力,你可以使用类型开关。而不是a, ok := m.(main.Sample),你做


switch a := m.(type) {

    case main.Sample:

        fmt.Println("It's a %s", reflect.TypeOf(m))

    case default:

        fmt.Println("It's an unknown type")

}


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信