因为在实际开发过程中看到过太多次因为少给结构体某个字段赋值产生数据 bug 的问题了,有没有什么 vscode 的插件可以提示结构体的所有导出字段并未被全部初始化啊?
1
makdon 2023-09-02 18:08:54 +08:00
对外不暴露结构体,只暴露接口,强制通过 New 方法初始化,可以达到这种效果
type foo struct { a typeX b typeX } type Foo Interface { Methods() } func NewFoo( ...opts) Foo { return foo{...} } |
2
iyear 2023-09-02 19:09:07 +08:00
提供一种 lint 方式: https://golangci-lint.run/usage/linters/#exhaustive
|
3
iyear 2023-09-02 19:09:55 +08:00
@iyear #2 不好意思,瞄点有问题,是 https://golangci-lint.run/usage/linters/#exhaustruct
|
4
Nazz 2023-09-02 19:13:25 +08:00 via Android
没必要
|
5
zhanglintc 2023-09-02 19:20:35 +08:00 1
@iyear #3 我猜你说的是锚 mao2 点
|
6
iyear 2023-09-02 19:29:50 +08:00
@zhanglintc #5 语文没学好😂😂
|
7
cmdOptionKana 2023-09-02 20:02:51 +08:00
单元测试?
|
8
WUWENZE 2023-09-02 20:10:06 +08:00
|
9
yplam 2023-09-02 21:35:16 +08:00 via Android
如果默认值不是空值,并且字段又较多,那可能定义多一个 DefaultXXX 这样合理点,或者用 NewXXX 传必填项,可选参数 WithXXX 定义非必填。ide 提示效果有限,除非这个结构体永远不会增加字段,lint 效果好点
|
10
aprikyblue 2023-09-02 21:43:13 +08:00
我觉得提供 New 方法就够了,谁不用 New 方法创建对象的就是谁的问题。
|
11
kkkbbb 2023-09-03 12:16:58 +08:00
比如出现什么 bug ?不是自动会有默认值么?
|