登录
首页 >  Golang >  Go问答

GoLang:泛型和动态类型在内部结构中的应用

来源:stackoverflow

时间:2024-02-07 08:30:22 169浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《GoLang:泛型和动态类型在内部结构中的应用》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我想让子结构使用泛型类型,因为变量可以是两种类型之一,具体取决于情况。我有以下解决方案

type resource interface {
    phone | computer
}

type metricdata[r resource] struct {
    resourcename string      `json:"resourcename"`
    metrics      []metric[r] `json:"metrics"`
}

type metric[r resource] struct {
    resource    r   `json:"resource"`
    occurrences int `json:"occurrences"`
    change      int `json:"change"`
}

但是,我在运行时不知道资源的类型。当我创建一个新的结构实例时,我需要提供 r 的类型

model.MetricData[model.Phone]{ResourceName: resource, Metrics: tm}

有没有办法在运行时为 metricdata 提供类型,并根据某些条件通过 if/else 语句确定它?


正确答案


也许这会有所帮助(playground):

func resourceType[T Resource](r T) string {
    switch any(r).(type) {
    case Phone:
        return "phone"
    case Computer:
        return "computer"
    default:
        return ""
    }
}

以上就是《GoLang:泛型和动态类型在内部结构中的应用》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>