因为在实际开发过程中看到过太多次因为少给结构体某个字段赋值产生数据 bug 的问题了,有没有什么 vscode 的插件可以提示结构体的所有导出字段并未被全部初始化啊?

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