go 方法接受者 是指標型別和非指標型別的 區別
go 方法接受者 是指標型別和非指標型別的 區別
非指標型別
package main
import "fmt"
// 定義介面
type Car interface {
GetName() string
Run()
}
// 定義結構體
type Tesla struct {
Name string
}
// 實現介面的GetName()方法
func (t Tesla) GetName() string {
t.Name = "test"
return t.Name
}
// 實現介面的Run()方法
func (t Tesla) Run() {
fmt.Printf("%s is runningn", t.Name)
}
func main() {
var c Car
var t Tesla = Tesla{"Tesla Model S"}
c = t // 上面是用指標*Tesla實現了介面的方法,這裡要傳地址
fmt.Println(c.GetName())
c.Run()
}
test
Tesla Model S is running
指標型別
package main
import "fmt"
// 定義介面
type Car interface {
GetName() string
Run()
}
// 定義結構體
type Tesla struct {
Name string
}
// 實現介面的GetName()方法
func (t *Tesla) GetName() string {
t.Name = "test"
return t.Name
}
// 實現介面的Run()方法
func (t *Tesla) Run() {
fmt.Printf("%s is runningn", t.Name)
}
func main() {
var c Car
var t Tesla = Tesla{"Tesla Model S"}
c = &t // 上面是用指標*Tesla實現了介面的方法,這裡要傳地址
fmt.Println(c.GetName())
c.Run()
}
test
test is running
結論
傳遞指標 可以 修改 傳遞的結構體的值,在其他方法中也生效。
原來一直寫python,不瞭解指標有啥用。 用到這裡明白了一點點。
©著作權歸作者所有:來自51CTO部落格作者295631788的原創作品,如需轉載,請註明出處,否則將追究法律責任
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2819531/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- golang中 值型別,指標,引用的區別Golang型別指標
- C#指標型別C#指標型別
- c指標型別的作用指標型別
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- 指標和引用的區別指標
- 指標常量和常量指標的區別指標
- 常見指標型別入門指標型別
- golang 指標型別引起的神奇 bugGolang指標型別
- Unreal 各種指標型別是怎麼回事Unreal指標型別
- 認真一點學 Go:14. 指標型別Go指標型別
- 第十五章:指標型別指標型別
- 深入解析Go非型別安全指標:技術全解與最佳實踐Go型別指標
- Go語言高階資料型別之指標篇Go資料型別指標
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- 第 10 節:複合型別-5. 指標 -- 指標與指標變數 -8. 多級指標型別指標變數
- Golang研學:在用好Golang指標型別Golang指標型別
- 【C++系列】指標物件和物件指標的區別C++指標物件
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- 第六章 指標和型別限定符指標型別
- C++指標與引用的區別C++指標
- All I know about A/B Test (1) : 均值型指標與比值(率)型指標的計算區別指標
- 不同型別的指標型別指標
- 指標 與 陣列 以及 a 與 &a的區別指標陣列
- 型別的本質:對變數、型別、指標的理解型別變數指標
- C++ 指標陣列與陣列指標的區別C++指標陣列
- js基本型別和引用型別區別JS型別
- 型別與泛型標記型別泛型
- GraphQL —— 標量型別型別
- c#中值型別和引用型別的區別C#型別
- C++編譯器認為的指標型別(靜態聯編)C++編譯指標型別
- BOOL,int,float,指標型別的變數a 與“零”的比較語句指標型別變數
- 值型別與引用型別的區別型別
- 管理型交換機和非管理型交換機區別
- 從賦值看基本型別和引用型別的區別賦值型別
- Python引用型別和值型別的區別與使用Python型別
- Rust 中的Box指標使遞迴型別成為可能 - Knoldus BlogsRust指標遞迴型別
- 關於C/C++ int (*t5)[3] 指標型別說明C++指標型別
- GO 指標Go指標