go是一門地地道道的物件導向的語言,但是他沒有大部分物件導向語言的關鍵字class,不過這並不影響這門優秀的語言發揮物件導向的特性。
go語言通過struct關鍵字來定義乙個類,在定義時,僅僅定義了字段,並沒有定義函式,例如
定義乙個person類,並指定姓名和年齡屬性,但是無法指定test方法(行為)。
type person struct
go是通過reciver來完成函式與類的連線工作的,下面,就給person類增加test方法
package main
import (
"fmt"
)func (per person) test1()
func (per *person) test2()
type person struct
func main()
pp.test1()
fmt.println(pp.name, pp.age, pp.flag)
pp.test2()
fmt.println(pp.name, pp.age, pp.flag)
}
func關鍵字 + (繫結型別) + 函式名(引數) + 返回值
就將乙個方法與乙個型別繫結起來了,預設是拷貝(如test1),可以通過傳遞指標(如test2)來使修改值一直生效。
GO基礎學習(三)
torget 1.型別轉化 2.介面 3.錯誤處理 4.開發工具 5.語法 6.標準庫 kno 1.型別轉化 判斷變數型別 reflect.typeof d 型別轉化 type name d 列印輸出 使用printf 2.介面 提供了另一種資料型別,把所有的具有共性的方法定義在一起,任何其他型別只...
Go基礎學習 map
無序的基於key value的資料結構 內部使用雜湊表 hash 實現 var m1 map string int 沒有初始化 沒有在記憶體中開闢空間 m1 make map string int,10 要估算好該map容量,避免在程式執行中再動態擴容 m1 tiezhu 12m1 tiedan 3...
Go基礎學習 defer
defer延遲函式總是在異常panic或者正常return前返回 defer執行順序按照先入後出的原則,即先入棧的最後執行 但是會先把引數壓入棧,具體執行會在函式結束前 當defer函式中存在函式時會先執行裡面的函式 defer函式呼叫的引數當存在閉包時,會從外面拿取該引數的最新的值 defer常常...