91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

method在golang中的作用是什么

發布時間:2021-01-06 15:10:16 來源:億速云 閱讀:140 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關method在golang中的作用是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

什么是method(方法)?method是函數的另外一種形態,隸屬于某個類型的方法。

method的語法:

func (r Receiver) funcName (parameters) (result)

receiver可以看作是method的第一個參數,method并且支持繼承和重寫。

  • Go中雖沒有class,但依舊有method

  • 通過顯示說明receiver來實現與某個類型的結合

  • 只能為同一個包中的類型定義方法

  • receiver可以是類型的值或者指針

  • 不存在方法重載

  • 可以使用值或指針來調用方法,編譯器會自動完成轉換

  • 從某種意義上來說,方法是函數的語法糖,因為receiver其實就是方法所接收的第一個參數(Method Value vs. Method Expression)

  • 如果外部結構和嵌入結構存在同名方法,則優先調用外部結構的方法

  • 類型別名不會擁有底層類型所附帶的方法

  • 方法可以調用結構中的非公開字段

go version go1.12

/**
 * 什么是method(方法)?method是函數的另外一種形態,隸屬于某個類型的方法。
 * method的語法:func (r Receiver) funcName (parameters) (result)。
 * receiver可以看作是method的第一個參數,method并且支持繼承和重寫。
 */
package main

import (
  "fmt"
)

type Human struct {
  name string
  age int
}

// 字段繼承
type Student struct {
  Human // 匿名字段
  school string
}
type Employee struct {
  Human  // 匿名字段
  company string
}

// 函數的另外一種形態:method,語法:func (r Receiver) funcName (parameters) (result)
// method當作struct的字段使用
// receiver可以看作是method的第一個參數
// 指針作為receiver(接收者)和普通類型作為receiver(接收者)的區別是指針會對實例對象的內容發生操作,
// 普通類型只是對副本進行操作
// method也可以繼承,下面是一個匿名字段實現的method,包含這個匿名字段的struct也能調用這個method
func (h *Human) Info() {
  // method里面可以訪問receiver(接收者)的字段
  fmt.Printf("I am %s, %d years old\n", h.name, h.age)
}

// method重寫,重寫匿名字段的method
// 雖然method的名字一樣,但是receiver(接收者)不一樣,那么method就不一樣
func (s *Student) Info() {
  fmt.Printf("I am %s, %d years old, I am a student at %s\n", s.name, s.age, s.school)
}
func (e *Employee) Info() {
  fmt.Printf("I am %s, %d years old, I am a employee at %s\n", e.name, e.age, e.company)
}
func main() {
  s1 := Student{Human{"Jack", 20}, "tsinghua"}
  e1 := Employee{Human{"Lucy", 26}, "Google"}
  // 調用method通過.訪問,就像struct訪問字段一樣
  s1.Info()
  e1.Info()
}

關于method在golang中的作用是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台中市| 弥渡县| 安顺市| 天台县| 德州市| 宁都县| 阜南县| 五寨县| 敖汉旗| 西畴县| 体育| 芜湖县| 江川县| 峨山| 郑州市| 临澧县| 宁强县| 萨迦县| 遵义县| 永平县| 宝兴县| 德阳市| 连江县| 武夷山市| 上饶县| 杨浦区| 新巴尔虎右旗| 新密市| 威宁| 天峨县| 沿河| 上犹县| 保山市| 宿松县| 寻甸| 汝州市| 玉门市| 梨树县| 南华县| 河津市| 济南市|