如何判断 struct 的值知否存在

2020-06-20 11:03:43 +08:00
 wunonglin

https://stackblitz.com/edit/typescript-zlwtyj 如何才能像 ts 这样判断值

struct 中的 int 值初始化为 0,string 值初始化是"",这样子怎么判断接口有没有传进来啊,因为接口也是可以接收 0 和空字符串的

2343 次点击
所在节点    Go 编程语言
8 条回复
thefack
2020-06-20 11:13:04 +08:00
加个状态变量
felix021
2020-06-20 11:26:08 +08:00
struct 的成员用指针

struct{
Ts *int
}
scnace
2020-06-20 11:26:37 +08:00
用*int 和 *string (逃
wunonglin
2020-06-20 11:41:20 +08:00
@felix021 #2
@scnace #3

nice,直接返回 nil
kaifang
2020-06-20 13:05:20 +08:00
也可以用校验器校验 https://github.com/go-playground/validator


type user struct{
id int `validate:"required"`
name string `validate:"required"`
age int `validate:"required,min=16,max=100"`
}


validate := validator.New()
if err := validate.Struct(user); err == nil {
fmt.Println("校验成功")
} else {
fmt.Println("校验失败")
}
wunonglin
2020-06-20 13:12:47 +08:00
@kaifang #5 因为是做 update,传入字段是动态的,所以不能用 required 只能用上面 2 、3 楼的指针了。要是是 create 的话那就可以用 required
RH
2020-06-20 21:03:14 +08:00
也可以尝试用这个 github.com/guregu/null
joesonw
2020-06-21 13:53:50 +08:00
所以你看到很多库, 例如 aws, 传参都是 *string, *int

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683263

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX