Golang结构体多标签

问题描述:结构体中定义多个标签,用来同时满足API层和持久层的需要。

标签本身不再赘述:http://www.imooc.com/article/78936

经历:

没直接找到相关帖子,按几个类似帖子试了下,发现可以的。

我定义了结构体和“form”标签,用来在Iris路由中接收表单数据。https://studyiris.com/example/request/readForm.html

不过我用了xormplus,对数据表的映射也定义了结构体。https://www.kancloud.cn/xormplus/xorm/167137

这两个实现方法很类似,而且这两个结构体有很多字段都是一样的。所以我期望API层和ORM能共用一个结构体。

不过我不知道二者能不能识别多标签的结构体,没有搜到相同问题的帖子,不过看到了这个帖子。虽然后面的结果和这里关系不大,但至少应该明确,结构体是支持多标签的https://ask.csdn.net/questions/1011836

然后猜测了一下写法,尝试了一下:

FileName   string `xorm:varchar(300)",form:"FileName"`

 

func AddInfo(ctx iris.Context) {
    var sfif SysFileInfo
    ctx.ReadForm(&sfif)
    log.Println("sfi:", sfif.FileName)

    //ctx.JSON("添加文件信息")
}

然后可以了,不过后来我发现了更奇怪的事情!

就是FileName定义的结构体,不是我后来用到的SysFileInfo!

这个标签根本就不影响!(当然是有影响的,看下文结果)

于是类比,我把xorm的也删了,果然,数据也插入成功了。

经过这里的测试,得出的结果是,如果字段名和form字段一致,那么标签时不必要的。而且在未定义form标签的情况下,实际传进来的form字段名和结构体里的字段名大小写不敏感。

数据库字段还没细测,因为xorm标签里没有字段名,而是字段信息,估计标签是用来新增表结构的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值