对外不暴露结构体,只暴露接口,强制通过 New 方法初始化,可以达到这种效果 type foo struct { a typeX b typeX } type Foo Interface { Methods() } func NewFoo( ...opts) Foo { return foo{...} }