gpt4 book ai didi

go - 如何创建动态类型的变量

转载 作者:行者123 更新时间:2023-12-01 22:40:39 24 4
gpt4 key购买 nike

我能够创建类型为“样本”的变量“模型”,如下所示:

type Sample struct {
Id int `jsonapi:"attr,id,omitempty"`
Name string `jsonapi:"attr,name,omitempty"`
}

var model Sample // created successfully

我已经知道结构类型(样本),因此能够成功创建它。

但是,当我尝试如下创建类似的变量“a”时,出现语法错误:
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'

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中创建动态类型的变量。

最佳答案

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")
}

关于go - 如何创建动态类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60263770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com