go語言學習筆記19 物件導向

2021-08-26 20:52:29 字數 1876 閱讀 3915

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的包的前面...