我使用了 github.com/hooklift/gowsdl/soap ,并使用此模式生成了代碼package funkyimport ( "fmt")type Place struct { Text string}type RandomFunky interface { Buggy(b int)(int)}type randomFunky struct { place *Place}func NewFunky(p *Place) RandomFunky { return &randomFunky{ place: p, } return nil }func (rf * randomFunky) Buggy(b int)(int) { fmt.Println(rf.place.Text) return b}package mainimport ( "fmt" "funky")func main() { p := funky.Place{} p.Text = "o jee" f := funky.NewFunky(&p) fmt.Printf("%T\n",f) // type of "*funky.randomFunky" // var f *funky.randomFunky !!! cannot refer to unexported name funky.randomFunky f.Buggy(1) }“f” - 我可以通過這種方式獲得這種類型,但我無法創(chuàng)建這種類型的變量!如果我想將 *funky.randomFunky var 存儲在 struct 中怎么辦?或者將其傳遞給函數(shù)?這是否意味著每次我想調(diào)用 Buggy 方法時都必須重新創(chuàng)建 NewFunky ?(假設(shè) Buggy 在多個地方調(diào)用和/或接口有更多方法)或者我應(yīng)該修改代碼并公開 *funky.randomFunky 嗎?要不然?
這個接口和私有數(shù)據(jù)類型模式的概念是什么
慕桂英3389331
2023-08-07 11:15:11