鉴于 Go 中的以下包,是否可以防止Barwith的直接初始化 Bar{..}而不Bar从包中取消暴露?
包bar:
package bar
import ()
type Bar struct {
A string
B string
}
func NewBar(baz string) Bar{
return Bar{A:baz, B:baz+baz}
}
包main:
package main
import (
"fmt"
"./bar"
)
func main() {
x := bar.NewBar("sad") //all bars should be created with this
y := bar.Bar{A: "fadss"} //and this should be disallowed
bzzBar(x)
bzzBar(y)
}
func bzzBar(bzz bar.Bar) { //but I can't do 'Bar -> bar' because I want to use the type
fmt.Println(bzz)
}
我的直觉说这是不可能的,所以这也是一个有效的答案。
忽然笑
慕运维8079593
相关分类