增加 Golang 面向对象编程.

Signed-off-by: chen.yang <chen.yang@yuzhen-iot.com>
This commit is contained in:
chen.yang 2021-07-30 14:57:37 +08:00
parent e2cf98a18d
commit 99c99a0658
1 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,49 @@
# Golang 面向对象编程
## 1.实现构造函数
Golang 没有构造函数这样的概念,可以在每个对象创建后调用一个 Init() 函数:
```go
type TesA struct {
str string
}
func (t *TesA) Init(str string) {
t.str = str
fmt.Println("TesA Init "+str+".")
}
func (t *TesA) TesAFun() {
fmt.Println("TesAFun")
}
func main() {
t := new(TesA)
t.Init("Hello")
t.TesAFun()
}
```
花一些小技巧可以将 new() 和 Init() 合并到一行:
```go
type TesA struct {
str string
}
func (t *TesA) Init(str string) *TesA {
t.str = str
fmt.Println("TesA Init "+str+".")
return t
}
func (t *TesA) TesAFun() {
fmt.Println("TesAFun")
}
func main() {
t := new(TesA).Init("Hello")
t.TesAFun()
}
```