第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個接口和私有數(shù)據(jù)類型模式的概念是什么

這個接口和私有數(shù)據(jù)類型模式的概念是什么

Go
慕桂英3389331 2023-08-07 11:15:11
我使用了 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 嗎?要不然?
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個贊

所以這個想法是,任何以小寫字母開頭的變量/函數(shù)/類型/方法都是局部的,而以大寫字母開頭的是全局的。本地的東西只能在同一個包內(nèi)直接使用。


因此,在您的情況下,RandomFunky是一個具有單個方法的全局接口Buggy,而 arandomFunky是一個本地結(jié)構(gòu),實(shí)現(xiàn),因?yàn)樗哂芯哂邢嗤瑓?shù)的RandomFunky方法。Buggy


事實(shí)上,NewFunky返回一個封裝在接口中的結(jié)構(gòu)。所以不能randomFunky在包外使用funky,但是可以使用funky.RandomFunky。


在你的情況下,你可以創(chuàng)建一個這種類型的變量


...

var f funky.RandomFunky

f = funky.NewFunky(&p)

...


查看完整回答
反對 回復(fù) 2023-08-07
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號