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

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

wordpress生成靜態(tài)頁滎陽網(wǎng)站優(yōu)化公司

wordpress生成靜態(tài)頁,滎陽網(wǎng)站優(yōu)化公司,網(wǎng)站流量高有什么用,重慶做網(wǎng)站好的公司本節(jié)內(nèi)容是面向?qū)ο蟮暮诵呐c基礎(chǔ),很重要。 注意:由于導(dǎo)包語句已經(jīng)在19講(筆記19:面向?qū)ο蟮囊?amp;#xff09;展示過了,所以這里就不展示了。 一、方法的定義與細(xì)節(jié) 方法是與特定類型(通常是結(jié)構(gòu)體&#x…

本節(jié)內(nèi)容是面向?qū)ο蟮暮诵呐c基礎(chǔ),很重要。
注意:由于導(dǎo)包語句已經(jīng)在19講(筆記19:面向?qū)ο蟮囊?#xff09;展示過了,所以這里就不展示了。

一、方法的定義與細(xì)節(jié)

方法是與特定類型(通常是結(jié)構(gòu)體)關(guān)聯(lián)的函數(shù)。方法可以操作該類型的實(shí)例,并且可以使用其字段。定義方法時(shí),需要指定一個(gè)接收者(receiver),這使得方法能夠訪問該接收者的屬性。語法如下:

func (receiver TypeName) MethodName(parameters) returnList {// 方法體
}

receiver是接收者的名稱,類型是你想要關(guān)聯(lián)的自定義類型(通常是結(jié)構(gòu)體)。
MethodName是方法的名稱。
parameters是方法接受的參數(shù)。
returnList是返回值類型列表。
首先,在utils中定義一個(gè)結(jié)構(gòu)體和一個(gè)方法:

type Circle struct {Radius float64
}// 定義一個(gè)方法,計(jì)算圓的面積
// 1. 方法中參數(shù)名字隨便起
// 2. 方法 Area 和結(jié)構(gòu)體 Circle綁定,必須在同包中定義!
func (c Circle) Area() float64 {return 3.14 * c.Radius * c.Radius
}

然后在main中調(diào)用:

func main() {// 創(chuàng)建一個(gè) Circle 實(shí)例circle := utils.Circle{Radius: 5}// 調(diào)用方法area := circle.Area()// 輸出結(jié)果fmt.Printf("Area: %.2f\n", area)
}

一些細(xì)節(jié)
1.如果其他類型的變量調(diào)用area一定會(huì)報(bào)錯(cuò)。
2.結(jié)構(gòu)體對(duì)象傳入方法area中,屬于值傳遞,和參數(shù)傳遞一致。
3.receiver的類型是你想要關(guān)聯(lián)的自定義類型。
4.如果某個(gè)自定義類型實(shí)現(xiàn)了返回string,名字為String()的方法(如果是同包內(nèi)調(diào)用,s可以小寫),那么fmt包的Printf或Println函數(shù)打印該類型時(shí),會(huì)自動(dòng)調(diào)用String()
對(duì)于前兩點(diǎn),首先,在utils中定義另一個(gè)方法來演示值傳遞:

// 定義一個(gè)方法,演示值傳遞
func (c Circle) SetRadius(newRadius float64) {c.Radius = newRadiusfmt.Printf("Inside Radius: %.2f\n", c.Radius)
}

然后在main文件中調(diào)用:

type test struct {a int
}func main() {// 創(chuàng)建一個(gè) Circle 實(shí)例circle := utils.Circle{Radius: 5}// 調(diào)用方法area := circle.Area()fmt.Printf("Area: %.2f\n", area)// 1. 如果其他類型變量調(diào)用 area 一定會(huì)報(bào)錯(cuò)// 下面的代碼將導(dǎo)致編譯錯(cuò)誤//t := test{}// t.area() // 這行會(huì)報(bào)錯(cuò),因?yàn)?radius 不是 Circle 類型// 2. 結(jié)構(gòu)體對(duì)象傳入方法 Area 中,屬于值傳遞circle2 := utils.Circle{Radius: 10}fmt.Printf("Old Radius: %.2f\n", circle2.Radius)// 調(diào)用 SetRadius 方法嘗試修改半徑circle2.SetRadius(15)fmt.Printf("New Radius: %.2f\n", circle2.Radius) // 仍然是 10
}

OK,如果我就想在SetRadius內(nèi)改變r(jià)adius呢?那肯定是用指針了,但方法比數(shù)組指針簡(jiǎn)單:將SetRadius中的Circle前加上*即可,因?yàn)?strong>編譯器會(huì)自動(dòng)處理結(jié)構(gòu)體指針,所以在main中的代碼無需改動(dòng)!
對(duì)于第三點(diǎn),receiver的類型是你想要關(guān)聯(lián)的自定義類型,這也就是說,基本類型不能作為方法中的接收類型!讀者可自行嘗試,這里不做贅述。
對(duì)于第四點(diǎn),首先,在utils內(nèi)定義String():

func (p Person) String() string {str := fmt.Sprintf("name=%s,age=%v,sex=%s", p.Name, p.Age, p.Sex)return str
}

然后在main中調(diào)用:

func main() {p := utils.Person{Name: "李華", Age: 30, Sex: "女"}fmt.Printf("%v\n", p) // 使用格式化字符串fmt.Println(p)        // 直接打印
}

這個(gè)String方法呢,也是定義結(jié)構(gòu)體時(shí)常用的,以便輸出結(jié)構(gòu)體信息。這里我提一個(gè)問題:如果定義了Person的別名,打印其實(shí)例還會(huì)自動(dòng)調(diào)用String()嗎?驗(yàn)證很簡(jiǎn)單,讀者可自行嘗試,這里不做贅述。

二、方法與函數(shù)的區(qū)別

方法函數(shù)
和其他類型的關(guān)系綁定到特定類型獨(dú)立于任何類型
語法func (receiver ReceiverType) MethodName(parameters) returnTypefunc FunctionName(parameters) returnType
調(diào)用方式通過類型的實(shí)例調(diào)用 instance.MethodName()直接調(diào)用 FunctionName()
作用域可以訪問綁定類型的字段只能訪問傳入的參數(shù)
指定類型是否需要和傳入類型一致不需要(可以隨意傳入值或指針)需要

關(guān)于最后一點(diǎn),首先在utils中定義兩個(gè)接收者不同的方法:

// 方法:接收者為值類型
func (p Person) PValue() {fmt.Println("Hello, my name is", p.Name)
}// 方法:接收者為指針類型
func (p *Person) PPointer() {fmt.Println("Hello, my name is", p.Name)
}

然后在main文件中調(diào)用:

// 函數(shù):必須傳入 Person 類型
func PrintPerson(p utils.Person) {fmt.Println("Person's name:", p.Name)
}func main() {// 創(chuàng)建值類型和指針類型的實(shí)例p1 := utils.Person{Name: "李華"}p2 := &utils.Person{Name: "張三"}p1.PPointer()   // 調(diào)用接收者為指針的方法,傳入值類型PrintPerson(p1) // 調(diào)用函數(shù),傳入值類型p2.PValue()      // 調(diào)用接收者為值類型的方法,傳入指針PrintPerson(*p2) // 調(diào)用函數(shù),傳入解引用的指針
}

程序輸出如下:

Hello, my name is 李華
Person's name: 李華
Hello, my name is 張三
Person's name: 張三
http://m.risenshineclean.com/news/63720.html

相關(guān)文章:

  • 網(wǎng)站開發(fā)要用到的工具鄭州網(wǎng)絡(luò)營銷公司哪家好
  • 東營網(wǎng)站建設(shè)公司廣告聯(lián)盟論壇
  • 不知道我自己的網(wǎng)站的ftp賬號(hào)百度點(diǎn)擊快速排名
  • 上弘科技網(wǎng)站建設(shè)百度新聞搜索
  • 河南建設(shè)銀行官方網(wǎng)站網(wǎng)址域名大全
  • 茌平網(wǎng)站建設(shè)費(fèi)用網(wǎng)店運(yùn)營公司
  • 漳州市住房建設(shè)局網(wǎng)站營銷型網(wǎng)站建設(shè)策劃書
  • 網(wǎng)站百度權(quán)重廣東疫情最新消息
  • 蘇州做網(wǎng)站公司電話十大免費(fèi)引流平臺(tái)
  • 沈陽市網(wǎng)站建設(shè)企業(yè)網(wǎng)站推廣和優(yōu)化系統(tǒng)
  • 邵陽疫情最新消息情況南寧百度推廣seo
  • 縣政府網(wǎng)站建設(shè)報(bào)告如何宣傳推廣自己的店鋪
  • 青島網(wǎng)站設(shè)計(jì)電話引擎網(wǎng)站
  • 湖南地稅局官網(wǎng)站水利建設(shè)基金什么軟件可以發(fā)布推廣信息
  • 武漢網(wǎng)站建設(shè)S小蝌蚪互聯(lián)搜索引擎優(yōu)化名詞解釋
  • wordpress標(biāo)簽有問題百中搜優(yōu)化
  • 天河做網(wǎng)站開發(fā)外包公司和勞務(wù)派遣
  • wordpress 登錄頁美化重慶seo公司怎么樣
  • 網(wǎng)站權(quán)重怎么提升可以搜索國外網(wǎng)站的搜索引擎
  • 商丘做網(wǎng)站公司新站seo快速收錄網(wǎng)頁內(nèi)容頁的方法如何制作公司網(wǎng)頁
  • 廣州網(wǎng)站建設(shè)公司興田德潤怎么樣搜收錄網(wǎng)
  • 起名網(wǎng)站怎么做免費(fèi)做網(wǎng)站怎么做網(wǎng)站嗎
  • 網(wǎng)站上那些兼職網(wǎng)頁怎么做的搜索引擎優(yōu)化的辦法有哪些
  • 用asp做的網(wǎng)站有多少沈陽cms建站模板
  • 順德企業(yè)手機(jī)網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷的方法有哪些?
  • 佛山網(wǎng)站優(yōu)化美姿姿seo百度競(jìng)價(jià)點(diǎn)擊軟件
  • 企業(yè)網(wǎng)站 實(shí)名認(rèn)證視頻號(hào)視頻怎么看下載鏈接
  • 做一個(gè)網(wǎng)站后期維護(hù)需要多少錢seo包年優(yōu)化平臺(tái)
  • 深圳本地做網(wǎng)站網(wǎng)絡(luò)營銷的策略包括
  • 做國際物流在哪些網(wǎng)站找客戶steam交易鏈接怎么看