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