package main
import
"fmt"
type interger int
func (a interger)test(b interger) interger
func main()
輸出結果6
type integer int :表示的意思是給int型別指定了乙個別名叫integer,別名可以隨便起,只要符合go語言的命名規則就可以。
指定別名後,後面可以用integer來代替int 來使用。
func (a integer) test(b integer) integer
表示定義了乙個方法,方法的定義與函式的區別
第一:在關鍵字後面加上( a integer), 這個在方法中稱之為接收者,所謂的接受者就是接收傳遞過來的第乙個引數,然後複製a, a的型別是integer ,由於integer是int的別名,所以a的型別為int
第二:在表示引數的型別時,都使用了對應的別名。
通過方法的定義,可以看出方法其實就是給某個型別繫結的函式。在該案例中,是為整型繫結的函式,只不過在給整型繫結函式(方法)時,一定要通過type來指定乙個別名,因為int型別是系統已經規定好了,無法直接繫結函式,所以只能通過別名的方式。
第三:呼叫方式不同
var result interger=3
表示定義乙個整型變數result,並賦值為3.
result.test( 3)
通過result變數,完成方法的呼叫。因為,test( )方法,是為int型別繫結的函式,而result變數為int型別。所以可以呼叫test( )方法。result變數的值會傳遞給test( )方法的接受者,也就是引數a,而實參test( 3),會傳遞形參b.
當然,我們也可以將test( )方法,理解成是為int型別擴充套件了,追加了的方法。因為系統在int型別時,是沒有改方法的。
package main
import (
"fmt"
)type person struct
func (tmp person) printinfo()
func main()
s.printinfo()
}//輸出結果
//abd 109 15
package main
import (
"fmt"
)type person struct
func (tmp *person) printinfo()
func main()
//輸出結果
//0 0
package main
import (
"fmt"
)type person struct
func (tmp person) printinfo()
type student struct
func main() ,17,"sea"}
s.printinfo()
}輸出結果
abd109
15
package main
import
"fmt"
type animal struct
func(p *animal) bark()
type dog struct
type cat struct
func (c *cat)bark()
func main()
//輸出結果
//wangwangjiao
//miaomiaojiao
cat的方法發生改變 go語言學習筆記20 物件導向
package main import fmt type human inte ce type student struct func s student sayhi type teacher struct func t teacher sayhi func main i s i.sayhi var...
go語言學習與物件導向再思考
據說smalltalk發明者alan kay就曾經說過 我發明了物件導向,而我可以告訴你c 並不是我頭腦裡所想的東西.計算機裡面只有資料和演算法,資料用於對現實世界抽象建模,演算法對資料演算,這已經很好,怎麼出來乙個物件導向這個 怪胎 物件導向教學每次都要從對現實世界的模擬講起,還記得那個會叫的鴨子...
go語言學習筆記
type info struct func main fmt.println info1 data,json.marshal info1 fmt.println string data 輸出 這裡要特別注意的是 json 冒號後面和雙引號之間千萬不要有空格!被坑慘了 go語言 import的包的前面...