Go 方法 學習筆記
方法method
- Go 中雖沒有class,但依舊有method
- 通過顯示說明receiver來實現與某個型別的組合
- 只能為同一個包中的型別定義方法
- Receiver 可以是型別的值或者指標
- 不存在方法過載
- 可以使用值或指標來呼叫方法,編譯器會自動完成轉換
- 從某種意義上來說,方法是函式的語法糖,因為receiver其實就是方法所接收的第1個引數(Method Value vs. Method Expression)
- 如果外部結構和嵌入結構存在同名方法,則優先呼叫外部結構的方法
- 型別別名不會擁有底層型別所附帶的方法
- 方法可以呼叫結構中的非公開欄位
1、init函式
package main
import (
"fmt"
)
var I int
func main() {
}
func init() {
I = 0
fmt.Println("Call mypackage init1")
}
func init() {
I = 1
fmt.Println("Call mypackage init2")
}
輸出結果:
2、方法與函式
package main
import (
"fmt"
)
type A struct {
name string
}
type B struct {
name string
}
// int都可以進行擴充
type DD int8
func main() {
// a := A{}
// a.print()
// // (*a).print()
// fmt.Println(a)
// b := B{}
// b.print()
// fmt.Println(b)
//呼叫方法的兩種方式
var d DD
d.print()
(DD).print(d)
}
func (a *A) print() {
a.name = "a_name"
fmt.Println("A")
}
func (b B) print() {
b.name = "b_name"
fmt.Println("B")
}
func (d DD) print() {
fmt.Println("D")
}
本文參考整理自:《Go 程式設計基礎》
個人微信公眾號:
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- GO 方法學習筆記Go筆記
- Go 學習筆記Go筆記
- Go語言學習筆記(七)之方法Go筆記
- go channel學習筆記Go筆記
- go defer 學習筆記Go筆記
- go 學習筆記---切片Go筆記
- Go 介面 學習筆記Go筆記
- Go 反射 學習筆記Go反射筆記
- 【學習筆記】Go Modules 使用筆記Go
- Go 進階學習筆記Go筆記
- go 閉包學習筆記Go筆記
- go 學習筆記---map(字典)Go筆記
- 【Go學習筆記4】切片Go筆記
- Go 函式 學習筆記Go函式筆記
- Go 結構 學習筆記Go筆記
- go學習筆記——gin框架Go筆記框架
- go 學習筆記之初識 go 語言Go筆記
- Go 入門指南學習筆記Go筆記
- GO 學習筆記->結構體Go筆記結構體
- go-ethereum學習筆記(一)Go筆記
- Go學習筆記-GMP詳解Go筆記
- Go學習筆記-Zap日誌Go筆記
- Go型別特性-學習筆記Go型別筆記
- go學習筆記劃重點Go筆記
- 【Go學習筆記16】解析xmlGo筆記XML
- 【Go學習筆記15】解析yamlGo筆記YAML
- 【Go】Go語言學習筆記-3-包Go筆記
- Go學習筆記 - Go 基礎語法(1)Go筆記
- Go 學習筆記 - Go 基礎語法(2)Go筆記
- Go 邊看邊練 - 《Go 學習筆記》系列Go筆記
- 統計學習方法筆記-感知機學習方法筆記
- [go 學習筆記] 二、變數、常量Go筆記變數
- go 學習筆記之工作空間Go筆記
- Go學習筆記-Gin常用功能Go筆記
- 【Go學習筆記11】併發(一)Go筆記
- GO 學習筆記 (三) : method 和 interfaceGo筆記
- Go 併發concurrency 學習筆記Go筆記
- Go 基礎語言學習筆記Go筆記