中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

營銷型網(wǎng)站的推廣社區(qū)推廣

營銷型網(wǎng)站的推廣,社區(qū)推廣,2016網(wǎng)站建設(shè)報(bào)價(jià)表,怎么清理網(wǎng)站后門文件函數(shù)是獨(dú)立的程序?qū)嶓w。我們可以聲明有名字的函數(shù),也可以聲明沒名字的函數(shù),還可以把它們當(dāng)做普通的值傳來傳去。我們能把具有相同簽名的函數(shù)抽象成獨(dú)立的函數(shù)類型,以作為一組輸入、輸出(或者說一類邏輯組件)的代表。 …

函數(shù)是獨(dú)立的程序?qū)嶓w。我們可以聲明有名字的函數(shù),也可以聲明沒名字的函數(shù),還可以把它們當(dāng)做普通的值傳來傳去。我們能把具有相同簽名的函數(shù)抽象成獨(dú)立的函數(shù)類型,以作為一組輸入、輸出(或者說一類邏輯組件)的代表。

方法卻不同,它需要有名字,不能被當(dāng)作值來看待,最重要的是,它必須隸屬于某一個(gè)類型。方法所屬的類型會(huì)通過其聲明中的接收者(receiver)聲明體現(xiàn)出來。

接收者聲明就是在關(guān)鍵字func和方法名稱之間的圓括號(hào)包裹起來的內(nèi)容,其中必須包含確切的名稱和類型字面量。

接收者的類型其實(shí)就是當(dāng)前方法所屬的類型,而接收者的名稱,則用于在當(dāng)前方法中引用它所屬的類型的當(dāng)前值。

方法隸屬的類型其實(shí)并不局限于結(jié)構(gòu)體類型,但必須是某個(gè)自定義的數(shù)據(jù)類型,并且不能是任何接口類型。

一個(gè)數(shù)據(jù)類型關(guān)聯(lián)的所有方法,共同組成了該類型的方法集合。同一個(gè)方法集合中的方法不能出現(xiàn)重名。并且,如果它們所屬的是一個(gè)結(jié)構(gòu)體類型,那么它們的名稱與該類型中任何字段的名稱也不能重復(fù)。

我們可以把結(jié)構(gòu)體類型中的一個(gè)字段看作是它的一個(gè)屬性或者一項(xiàng)數(shù)據(jù),再把隸屬于它的一個(gè)方法看作是附加在其中數(shù)據(jù)之上的一個(gè)能力或者一項(xiàng)操作。將屬性及其能力(或者說數(shù)據(jù)及其操作)封裝在一起,是面向?qū)ο缶幊?#xff08;object-oriented programming)的一個(gè)主要原則。

Go 語言攝取了面向?qū)ο缶幊讨械暮芏鄡?yōu)秀特性,同時(shí)也推薦這種封裝的做法。從這方面看,Go 語言其實(shí)是支持面向?qū)ο缶幊痰?#xff0c;但它選擇摒棄了一些在實(shí)際運(yùn)用過程中容易引起程序開發(fā)者困惑的特性和規(guī)則。

type AnimalCategory struct {kingdom string // 界。phylum string // 門。class string // 綱。order string // 目。family string // 科。genus string // 屬。species string // 種。
}category := AnimalCategory{species: "cat"}type Animal struct {
scientificName string // 學(xué)名。
AnimalCategory // 動(dòng)物基本分類。
}animal := Animal{scientificName: "American Shorthair",AnimalCategory: category,
}
fmt.Printf("The animal: %s\n", animal)

上述代碼在后面使用fmt.Printf函數(shù)和%s占位符試圖打印animal的字符串表示形式,相當(dāng)于調(diào)用animalString方法。雖然我們還沒有為Animal類型編寫String方法,但這樣做是沒問題的。因?yàn)樵谶@里,嵌入字段AnimalCategoryString方法會(huì)被當(dāng)做animal的方法調(diào)用。

那如果我也為Animal類型編寫一個(gè)String方法呢?這里會(huì)調(diào)用哪一個(gè)呢?

答案是,animal的String方法會(huì)被調(diào)用。這時(shí),我們說,嵌入字段AnimalCategory的String方法被“屏蔽”了。注意,只要名稱相同,無論這兩個(gè)方法的簽名是否一致,被嵌入類型的方法都會(huì)“屏蔽”掉嵌入字段的同名方法。

類似的,由于我們同樣可以像訪問被嵌入類型的字段那樣,直接訪問嵌入字段的字段,所以如果這兩個(gè)結(jié)構(gòu)體類型里存在同名的字段,那么嵌入字段中的那個(gè)字段一定會(huì)被“屏蔽”。

正因?yàn)榍度胱侄蔚淖侄魏头椒ǘ伎梢浴凹藿印钡奖磺度腩愋蜕?#xff0c;所以即使在兩個(gè)同名的成員一個(gè)是字段,另一個(gè)是方法的情況下,這種“屏蔽”現(xiàn)象依然會(huì)存在。

不過,即使被屏蔽了,我們?nèi)匀豢梢酝ㄟ^鏈?zhǔn)降倪x擇表達(dá)式,選擇到嵌入字段的字段或方法,就像我在Category方法中所做的那樣。這種“屏蔽”其實(shí)還帶來了一些好處。我們看看下面這個(gè)Animal類型的String方法的實(shí)現(xiàn):

func (a Animal) String() string {return fmt.Sprintf("%s (category: %s)",a.scientificName, a.AnimalCategory)
}

在這里,我們把對嵌入字段的String方法的調(diào)用結(jié)果融入到了Animal類型的同名方法的結(jié)果中。這種將同名方法的結(jié)果逐層“包裝”的手法是很常見和有用的,也算是一種慣用法了。

image.png

最后,還要提一下多層嵌入的問題。也就是說,嵌入字段本身也有嵌入字段的情況。請看我聲明的Cat類型:

type Cat struct {name stringAnimal
}
func (cat Cat) String() string {return fmt.Sprintf("%s (category: %s, name: %q)",cat.scientificName, cat.Animal.AnimalCategory, cat.name)
}

結(jié)構(gòu)體類型Cat中有一個(gè)嵌入字段Animal,而Animal類型還有一個(gè)嵌入字段AnimalCategory。
在這種情況下,“屏蔽”現(xiàn)象會(huì)以嵌入的層級為依據(jù),嵌入層級越深的字段或方法越可能被“屏蔽”。

例如,當(dāng)我們調(diào)用Cat類型值的String方法時(shí),如果該類型確有String方法,那么嵌入字段AnimalAnimalCategoryString方法都會(huì)被“屏蔽”。

如果該類型沒有String方法,那么嵌入字段AnimalString方法會(huì)被調(diào)用,而它的嵌入字段AnimalCategoryString方法仍然會(huì)被屏蔽。

只有當(dāng)Cat類型和Animal類型都沒有String方法的時(shí)候,AnimalCategoryString方法才被調(diào)用。
最后的最后,如果處于同一個(gè)層級的多個(gè)嵌入字段擁有同名的字段或方法,那么從被嵌入類型的值那里,選擇此名稱的時(shí)候就會(huì)引發(fā)一個(gè)編譯錯(cuò)誤,因?yàn)榫幾g器無法確定被選擇的成員到底是哪一個(gè)。

Go語言是用嵌入字段實(shí)現(xiàn)了繼承嗎?

這里強(qiáng)調(diào)一下,Go 語言中根本沒有繼承的概念,它所做的是通過嵌入字段的方式實(shí)現(xiàn)了類型之間的組合。Go語言官網(wǎng)有關(guān)于這樣的說明。

簡單來說,面向?qū)ο缶幊讨械睦^承,其實(shí)是通過犧牲一定的代碼簡潔性來換取可擴(kuò)展性,而且這種可擴(kuò)展性是通過侵入的方式來實(shí)現(xiàn)的。

類型之間的組合采用的是非聲明的方式,我們不需要顯式地聲明某個(gè)類型實(shí)現(xiàn)了某個(gè)接口,或者一個(gè)類型繼承了另一個(gè)類型。

同時(shí),類型組合也是非侵入式的,它不會(huì)破壞類型的封裝或加重類型之間的耦合。我們要做的只是把類型當(dāng)做字段嵌入進(jìn)來,然后坐享其成地使用嵌入字段所擁有的一切。如果嵌入字段有哪里不合心意,我們還可以用“包裝”或“屏蔽”的方式去調(diào)整和優(yōu)化。

另外,類型間的組合也是靈活的,我們總是可以通過嵌入字段的方式把一個(gè)類型的屬性和能力“嫁接”給另一個(gè)類型。

這時(shí)候,被嵌入類型也就自然而然地實(shí)現(xiàn)了嵌入字段所實(shí)現(xiàn)的接口。再者,組合要比繼承更加簡潔和清晰,Go 語言可以輕而易舉地通過嵌入多個(gè)字段來實(shí)現(xiàn)功能強(qiáng)大的類型,卻不會(huì)有多重繼承那樣復(fù)雜的層次結(jié)構(gòu)和可觀的管理成本。

接口類型之間也可以組合。在 Go 語言中,接口類型之間的組合甚至更加常見,我們常常以此來擴(kuò)展接口定義的行為或者標(biāo)記接口的特征。

值方法和指針方法都是什么意思,有什么區(qū)別?

  1. 值方法的接收者是該方法所屬的那個(gè)類型值的一個(gè)副本。我們在該方法內(nèi)對該副本的修改一般都不會(huì)體現(xiàn)在原值上,除非這個(gè)類型本身是某個(gè)引用類型(比如切片或字典)的別名類型。

    而指針方法的接收者,是該方法所屬的那個(gè)基本類型值的指針值的一個(gè)副本。我們在這樣的方法內(nèi)對該副本指向的值進(jìn)行修改,卻一定會(huì)體現(xiàn)在原值上。

  2. 一個(gè)自定義數(shù)據(jù)類型的方法集合中僅會(huì)包含它的所有值方法,而該類型的指針類型的方法集合卻囊括了前者的所有方法,包括所有值方法和所有指針方法。

    嚴(yán)格來講,我們在這樣的基本類型的值上只能調(diào)用到它的值方法。但是,Go 語言會(huì)適時(shí)地為我們進(jìn)行自動(dòng)地轉(zhuǎn)譯,使得我們在這樣的值上也能調(diào)用到它的指針方法。

    比如,在Cat類型的變量cat之上,之所以我們可以通過cat.SetName(“monster”)修改貓的名字,是因?yàn)?Go 語言把它自動(dòng)轉(zhuǎn)譯為了(&cat).SetName(“monster”),即:先取cat的指針值,然后在該指針值上調(diào)用SetName方法。

  3. 在后邊你會(huì)了解到,一個(gè)類型的方法集合中有哪些方法與它能實(shí)現(xiàn)哪些接口類型是息息相關(guān)的。如果一個(gè)基本類型和它的指針類型的方法集合是不同的,那么它們具體實(shí)現(xiàn)的接口類型的數(shù)量就也會(huì)有差異,除非這兩個(gè)數(shù)量都是零。

    比如,一個(gè)指針類型實(shí)現(xiàn)了某某接口類型,但它的基本類型卻不一定能夠作為該接口的實(shí)現(xiàn)類型。

文章學(xué)習(xí)自郝林老師的《Go語言36講》

http://www.risenshineclean.com/news/33721.html

相關(guān)文章:

  • 做柜子網(wǎng)站營銷型企業(yè)網(wǎng)站推廣的方法有哪些
  • 域名經(jīng)紀(jì)公司推薦關(guān)鍵詞優(yōu)化建議
  • 政府部門網(wǎng)站方案公司建網(wǎng)站需要多少錢
  • 查詢網(wǎng)站備案時(shí)間查詢seo建站要求
  • 廣州做網(wǎng)站建設(shè)哪家專業(yè)分銷系統(tǒng)
  • 做jsp動(dòng)態(tài)網(wǎng)站需要的步驟鴻科經(jīng)緯教網(wǎng)店運(yùn)營推廣
  • 免費(fèi)注冊163成都seo招聘信息
  • 許昌企業(yè)網(wǎng)站建設(shè)5118數(shù)據(jù)分析平臺(tái)
  • 程序員公司seo診斷書案例
  • 獨(dú)立網(wǎng)站做外貿(mào)報(bào)價(jià)青島谷歌seo
  • 網(wǎng)站宣傳方案新手seo入門教程
  • 網(wǎng)站的當(dāng)前位置導(dǎo)航如何做正規(guī)的微信推廣平臺(tái)
  • 做視頻網(wǎng)站需要多大帶寬朋友圈廣告推廣平臺(tái)
  • 網(wǎng)站色哦優(yōu)化8888電商如何從零做起
  • 南京服務(wù)好建設(shè)網(wǎng)站哪家好seo快速優(yōu)化方法
  • 網(wǎng)站首頁結(jié)構(gòu)推廣app軟件
  • ui設(shè)計(jì)做兼職的網(wǎng)站刷推廣鏈接的網(wǎng)站
  • 高性能網(wǎng)站建設(shè)指南 書seo搜索引擎優(yōu)化平臺(tái)
  • 旅游開發(fā) 網(wǎng)站建設(shè)山西網(wǎng)站seo
  • 醫(yī)療網(wǎng)站建設(shè)計(jì)劃書電子商務(wù)網(wǎng)站建設(shè)方案
  • 專業(yè)的外貿(mào)行業(yè)網(wǎng)站制作深圳百度總部
  • 修文縣生態(tài)文明建設(shè)局網(wǎng)站游戲推廣怎么做引流
  • 自己公司網(wǎng)站維護(hù)百度推廣效果
  • 網(wǎng)站空間的控制面板首頁seo推廣培訓(xùn)
  • 局網(wǎng)站建設(shè)寧波好的seo外包公司
  • 用什么網(wǎng)站做微信推送今日頭條淄博新聞
  • 簡單的wordpress主題保定關(guān)鍵詞優(yōu)化軟件
  • wordpress 中文兩欄博客主題 style.css狼雨seo網(wǎng)站
  • 上??娝乖O(shè)計(jì)公司官網(wǎng)windows11優(yōu)化大師
  • 中國建設(shè)銀行官網(wǎng)站企業(yè)網(wǎng)銀營銷策劃與運(yùn)營