go - 如何附加到结构内的所有字符串值?

标签 go struct

我在 fruits.go 中定义了一个结构

package domain

type AppleImages struct {
    Front string `json:"frontImage"`
    Back  string `json:"backImage"`
    Top   string `json:"topImage"`
}

我在 process.go 中定义了相同的内容(它将数据返回给处理程序)。此定义仅用于演示目的,因为我使用 gorm 从数据库获取值,因此我们无法在此处附加所需的 URL。

package process

func getApple() (apple domain.Apple){
    apple = domain.Apple{
        Front: "front-image.png"
        Back: "back-image.png"
        Top: "top-image.png"
    }
    return
}

对于我的输出想要返回

{
    frontImage: "https://www.example.com/front-image.png",
    backImage: "https://www.example.com/back-image.png",
    topImage: "https://www.example.com/top-image.png",
}

我不想手动将 https://www.example.com/ 添加到结构中的每个图像。

是否有一种方法可以解析结构并自动将此字符串附加到所有现有值?

最佳答案

使用 gorm AfterFind 钩子(Hook)。每次从数据库加载数据后,gorm 都会调用 AfterFind ,并且您的数据将针对 Apple 模型进行更新。这样你就不需要每次从数据库中获取数据后都手动执行此操作。

func (u *Apple) AfterFind() (err error) {
  u.Front= "https://www.example.com/"+ u.Front
  u.Back= "https://www.example.com/"+ u.Back
  u.Top= "https://www.example.com/"+ u.Top
  return
}

查看详情here

关于go - 如何附加到结构内的所有字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62039606/

相关文章:

go - 在生产者速度慢,消费者速度快的情况下,如何处理 channel 关闭同步?

json - 如何处理文档中json字段不一致的情况

c - 使用结构体组织输入 - C 编程

pointers - Setter 方法不设置结构属性 Golang

c++ - 在 C++ 中迭代结构

go - Cors 不适用于 gin 和 golang 组路由

templates - Golang 模板是一种更好的基于角色的 View 方法

sql - Go语言单数据库查询寻址多参数

c# - 如何在不使类型成为结构的情况下防止修改 Collection 中的对象?

c++ - SunCC 5.12 到 5.14 和 "Types cannot be declared in anonymous union"