2 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
在表達(dá)式中:
newFacade , err := Facade(NewObject())
Facade(NewObject())
不是構(gòu)造函數(shù),而是顯式類型轉(zhuǎn)換。您根本不需要它,因?yàn)?code>NewObject()已經(jīng)是構(gòu)造函數(shù),它返回一個(gè)Facade
類型和一個(gè)錯(cuò)誤。所以就:
newFacade , err := NewObject()
在我看來應(yīng)該工作。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
問題是 NewObject 有多個(gè)返回值,您不能鏈接或返回多個(gè)值的下一個(gè)函數(shù)(在同一行中)。
不清楚為什么您要嘗試在您認(rèn)為應(yīng)該是 Facade 的返回值上調(diào)用 Facade(...),您是否在進(jìn)行類型轉(zhuǎn)換?
嘗試取出值并處理錯(cuò)誤,然后調(diào)用外部函數(shù)。
type Facade interface {
GetOne() int
}
type ObjectOne struct{
one int
}
func NewObject()(Facade, error){
o := &ObjectOne{}
return o , errors.New("Some funny error")
}
func(o * ObjectOne)GetOne()int{
return 1
}
func SomeWhereInCode(){
newFacade , err := NewObject())
if err != nil {
// handle err or panic
}
Facade(newFacade)
}
- 2 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)