go面相對象的特性
僅支持封裝,不支持繼承和多態(tài)
沒有class,只有struct
go語言沒有構(gòu)造函數(shù)這一說法,也不需要構(gòu)造函數(shù),如果某些時候的確需要控制他的構(gòu)造,我們可以使用自定義工廠函數(shù)。
package tree
import "fmt"
type Nodestruct {
Value? ? ? int
Left, Right *Node
}
func (node Node) Print() {
fmt.Print(node.Value," ")
}
func (node *Node) SetValue(value int) {
if node == nil {
fmt.Println("Setting Value to nil " +
"node. Ignored.")
return
? }
node.Value = value
}
func CreateNode(value int) *Node {
return &Node{Value: value}
}
為結(jié)構(gòu)定義方法
顯示定義和命名方法接收者
只有使用指針作為方法的接收者,才可以改變結(jié)構(gòu)內(nèi)容。
nil指針也可以調(diào)用方法。(一般會在為結(jié)構(gòu)定義的方法里面做判斷)