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

2021-08-27 00:12:55 字數 2852 閱讀 2955

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 t teacher = teacher

i=&t

i.sayhi()

}//輸出結果

//lili 1

//bobo 2

介面作用實現多型。

package main

import

"fmt"

type human inte***ce

type student struct

func (s *student) sayhi()

type teacher struct

func (t *teacher) sayhi()

func who(i human)

func main()

who(&s)

var t teacher = teacher

who(&t)

}//輸出結果

//654321 lili 1

//123456 bobo 2

乙個函式who可以呼叫不同的兩種方法。

接下來讓我們用乙個計算機的例項來介看看介面的用處!

1)使用物件導向的思想實現乙個加減功能的計算器

package main

import

"fmt"

type opertion struct

func (o *opertion) getresult(info string, num1 float64, num2 float64) (result float64)

return

}func main()

//輸出結果

//6//3

我們定義了乙個類(結構體),然後為該類建立了乙個方法,封裝了整個計算器功能,以後要使用直接使用該類(結構體)建立物件就可以了。這就是物件導向總的封裝性。

2)用介面實現

package main

import

"fmt"

type opertion struct

type getresult inte***ce

type add struct

func (a *add) getresult() float64

type sub struct

func (s *sub) getresult () float64

type factory struct

func oper(i getresult)float64

func(f *factory)createfaction(info string,num1 float64,num2 float64)float64 }

result=oper(add)

case

"-":

sub := &sub}

result=oper(sub)

}return result

}func main()

//輸出結果

//30

//10

package main

import

"fmt"

type humaner inte***ce

type person inte***ce

type student struct

func (s *student)sayhi()

func (sa *student)sing(s string)

func main()

i=si.sayhi()

i.sing("哥哥")

}//輸出結果

//hello

//student 在唱著 哥哥

介面繼承後,可以實現「超集」介面轉換「子集」介面,**如下:

package main

import

"fmt"

type humaner inte***ce

type person inte***ce

type student struct

func (s *student) sayhi()

func (sa *student) sing(s string)

func main()

i = s

var m humaner

//i=m //err

m=sm.sayhi()

i.sing("哥哥")

}//輸出結果

//hello

//student 在唱著 哥哥

空介面(inte***ce{})不包含任何的方法,正因為如此,所有的型別都實現了空介面,因此空介面可以儲存任意型別的數值。

例如:

package main

import

"fmt"

func main() =1

fmt.println("i=",i)

i="abc"

fmt.println("i=",i)

}//輸出結果

//i= 1

//i= abc

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

package main import fmt type interger int func a interger test b interger interger func main 輸出結果6type integer int 表示的意思是給int型別指定了乙個別名叫integer,別名可以隨便起...

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