Golang語言中的method是什麼
什麼是method(方法)?method是函式的另外一種形態,隸屬於某個型別的方法。method的語法:func (r Receiver) funcName (parameters) (result)。receiver可以看作是method的第一個引數,method並且支援繼承和重寫。
/**
* 什麼是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()
}
相關文章
- Golang語言中的interface是什麼(下)Golang
- Golang語言中的interface是什麼(上)Golang
- 在R語言中,因子是什麼R語言
- "->" 在c語言中是什麼意思?C語言
- Python語言中/與//的區別是什麼?Python
- C語言中陣列溢位是什麼C語言陣列
- C++語言中 *與&的作用分別是什麼啊?C++
- Go語言中結構體打Tag是什麼意思?Go結構體
- Python語言中__init__與__new__的區別是什麼?Python
- 嵌入式C語言中的組成結構是什麼C語言
- Python語言中變數名是什麼?命名規則有哪些?Python變數
- c語言以及高階語言中的float到底是什麼以及IEEE754C語言
- Python語言中=和==有什麼區別?Python
- 在 Go 語言中,我為什麼使用介面Go
- 為什麼在Go語言中要慎用interface{}Go
- 各語言中的三元運算子與 golang 對比Golang
- 【Golang詳解】go語言中併發安全和鎖Golang
- Python語言中合法變數命名有什麼規則?Python變數
- Python是什麼語言?Python底層語言是什麼?Python
- Golang context (上下文)是什麼GolangContext
- C語言中的關鍵字有哪些,分別代表什麼意思C語言
- Python語言中的模組、包、庫之間有什麼區別?Python
- 為什麼python在眾多程式語言中脫穎而出?Python
- Python學習教程_Python語言中=和==有什麼區別?Python
- 程式語言中為什麼使用分號作為語句結束符?
- 什麼是r語言R語言
- python語言是什麼Python
- 語言是 Go 還是 Golang?Golang
- go語言中make和new有什麼作用以及區別?Go
- 什麼是程式語言,什麼是Python直譯器Python
- MAC是什麼意思 網路用語mac是什麼Mac
- Go 語言中的方法Go
- C語言中的#和##C語言
- 什麼是Go語言?Go語言有什麼特點?Go
- Go語言之methodGo
- async/await 在 C# 語言中是如何工作的?(下)AIC#
- async/await 在 C# 語言中是如何工作的?(中)AIC#
- async/await 在 C# 語言中是如何工作的?(上)AIC#