Go基礎之物件導向(擴充套件已有型別篇)

2021-08-26 12:02:18 字數 1600 閱讀 3257

方法一 定義別名

//使用別名對已有型別進行擴充套件 用別名"queue"擴充套件原型別int,為其增加push(), pop(), isempty() 方法

type queue int

func (q *queue) pop() int

func (q *queue) isempty() bool

驗證:func main()

q.push(2)

q.push(3)

fmt.printf("pop: %d\n", q.pop())

fmt.printf("pop: %d\n", q.pop())

fmt.println(q.isempty())

fmt.printf("pop: %d\n", q.pop())

fmt.println(q.isempty())    

}輸出結果:

pop: 1

pop: 2

false

pop: 3

true

方法二 使用組合

//原有型別 對樹只有中序遍歷

import (

"fmt"

)type node struct

func creatnode(data int, left, right *node) *node

}func (node *node) print()

//中序遍歷

func (node *node) inorder()

node.left.inorder()

node.print()

node.right.inorder()

}//通過使用組合的方式對原有型別進行擴充套件,將原結構體"node"組合到"mynode"中,在mynode中增加了後序遍歷的方法

type mynode struct

//後序遍歷

func (mynode *mynode) postorder()

myleft := mynode

myleft.postorder()

myright := mynode

myright.postorder()

mynode.mynode.print()    

}驗證:

func main()

root.left = &tree.node

root.right = tree.creatnode(2, nil, nil)

root.left.left = &tree.node

root.left.right = &tree.node

root.right.left = &tree.node

//擴充套件前進行中序遍歷 

root.inorder()         //結果:341072

fmt.println()

//擴充套件後可以進行後續遍歷

myroot := mytree.mynode

myroot.postorder()      //結果:314720

}

Go基礎之物件導向(GOPATH篇)

export path gopath bin path usr local go bin export goroot usr local go export gopath home go goroot 環境變數 存放go語言系統庫檔案的目錄,如 fmt io 等,就是go的sdk gopath 環境...

Python之物件導向 物件導向基礎

一 面向過程 物件導向對比 1 面向過程 根據業務邏輯從上到下寫壘 2 函式式思想 將某功能 封裝到函式中,日後便無需重複編寫,僅呼叫函式即可 3 物件導向 對函式進行分類和封裝 1 2 3一步一步抽象,函式式是走向物件導向的中間步驟 函式式的應用場景 各個函式之間是獨立且無共用的資料 物件導向程式...

Python 基礎之物件導向

封裝繼承 類和型別 多型意味著就算不知道變數所引用的物件型別是什麼,還是能對它進行操作,而它也會根據物件 或者類 型別的不同而表現出不同的行為。程式得到了乙個物件,但是並不知道它是怎麼實現的 它可能有多種 形狀 繫結到物件特性上面的函式稱為方法 method 對於乙個變數x來說,我們不需要知道他是字...