如何判断 struct 的值知否存在

2020 年 6 月 20 日
 shakaraka

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

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

2779 次点击
所在节点    Go 编程语言
8 条回复
thefack
2020 年 6 月 20 日
加个状态变量
felix021
2020 年 6 月 20 日
struct 的成员用指针

struct{
Ts *int
}
scnace
2020 年 6 月 20 日
用*int 和 *string (逃
shakaraka
2020 年 6 月 20 日
@felix021 #2
@scnace #3

nice,直接返回 nil
kaifang
2020 年 6 月 20 日
也可以用校验器校验 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("校验失败")
}
shakaraka
2020 年 6 月 20 日
@kaifang #5 因为是做 update,传入字段是动态的,所以不能用 required 只能用上面 2 、3 楼的指针了。要是是 create 的话那就可以用 required
RH
2020 年 6 月 20 日
也可以尝试用这个 github.com/guregu/null
joesonw
2020 年 6 月 21 日
所以你看到很多库, 例如 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