如何将自定义属性附加到 Golang 结构,如 Laravel 模型上的 $append?

How to append custom attribute to Golang struct like $append on a Laravel model?

我正在尝试向我的 Golang 结构添加自定义属性,就像我通常使用 $appends 变量在 Laravel 模型上添加自定义属性一样。
这是代码:

package models

import (
    "time"
)

type Dummy struct {
    ID          string `json:"id" gorm:"primary_key"`
    Description string `json:"description"`
    Image       string `json:"image"`
    ImageUrl    ImageUrlDummy
    Number      int       `json:"number"`
    UserId      string    `json:"user_id"`
    User        User      `json:"user"`
    CreatedAt   time.Time `json:"created_at"`
    UpdatedAt   time.Time `json:"updated_at"`
}

func ImageUrlDummy() string {
    return "test"
}


但是,结构内部的 ImageUrlDummy 不起作用,它会出现 return 错误,例如:

ImageUrlDummy (value of type func() string) is not a type


我如何实现从 Laravel 到 Golang 的相同代码?
class Dummy extends Model
{
    protected $appends = ['image_url'];

    public function getImageUrlAttribute(){
        return "this is the image url";
    }
}

请原谅我还在学习Golang,谢谢

你已经不远了..

将您的结构更改为(删除 ImageUrlDummy,修复图像的 json 标签):

    type Dummy struct {
        ID          string `json:"id" gorm:"primary_key"`
        Description string `json:"description"`
        Image       string `json:"image"`
        Number      int       `json:"number"`
        UserId      string    `json:"user_id"`
        User        User      `json:"user"`
        CreatedAt   time.Time `json:"created_at"`
        UpdatedAt   time.Time `json:"updated_at"`
    }

然后用虚拟指针类型的接收者定义一个方法

    func (d *Dummy) ImageUrl() string {
        return "test"
    }

包含更多内容的示例:https://play.golang.com/p/olGSFhBgqkG