方法一 定義別名
//使用別名對已有型別進行擴充套件 用別名"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來說,我們不需要知道他是字...