func (s *mystruct) pointermethod() // method on pointer將接收器定義為指標
func (s mystruct) valuemethod() // method on value將接收器定義為值
指標型別* t的方法集包含值型別t的方法集,反之不成立。
從以下幾個方面考慮將接收器定義為指標
1、方法需要修改接收器;
2、效率。接收器例項佔記憶體空間比較大,用指標;
3、一致。如果接收器有方法不得不用指標,那麼所有方法用指標,以保持風格一致。
比如一些基本型別,slice、map、小struct,如果不是必須要指標,用值接收器比較高效和清晰。
golang 指標型別和普通型別的方法集
用例項value與pointer呼叫方法 含匿名字段 不受方法集的約束,編譯器總是查詢全部方法,並且自動轉換receiver實參 package main import fmt type person struct 非指標 func p person setinfovalue 指標 func p p...
序列型別的方法
檢視括號內資料型別的方法 dir obj 檢視括號內方法如何使用 help obj 指定下標刪除 del a index a 1,2,3 增 a.insert index,obj 指定下標插入 a.extend iterable 新增序列型別 刪 a.pop index 1 指定下標刪除,預設刪最後...
序列型別的方法
a 1,2,3,a b a.insert 0,c 插入,0表示插入的位置 a.extend 5,e 擴充套件 把列表裡面的元素新增進去 extend 是新增乙個序列型別 列表的刪除 a.clear 清除 謹慎使用 a.pop 每次彈出最後乙個元素 末位刪除 a.pop 0 0代表索引,刪除第幾個元素...