
封装:
package main
import (
"fmt"
)
type Foo struct {
baz string
}
func (f *Foo) echo() {
fmt.Println(f.baz)
}
func main() {
f := Foo{baz: "hello,world"}
f.echo()
}
func (f *Foo) echo() {----其中(f *Foo)是接收者
package main
import (
"fmt"
)
type Foo struct {
baz string
}
type Bar struct {
Foo
}
func (f *Foo) echo() {
fmt.Println(f.baz)
}
func main() {
b := Bar{Foo{baz: "hello,struct"}}
b.echo()
}
type Bar struct {
Foo
}---Foo是一个匿名字段,Bar 结构体拥有了Foo的所欲特性,
多肽:
package main
import (
"fmt"
)
type Foo interface {
qux()
}
type Bar struct{}
type Baz struct{}
func (b Bar) qux() {}
func (b Baz) qux() {}
func main() {
var f Foo
f = Baz{}
fmt.Println(f)
f = Bar{}
fmt.Println(f)
}
package main
import (
"fmt"
)
type Foo interface {
qux()
}
type Bar struct{}
type Baz struct{}
func (b Bar) qux() {
fmt.Println("Bar")
}
func (b Baz) qux() {
fmt.Println("Baz")
}
func main() {
var f Foo
f = Baz{}
f.qux()
f = Bar{}
f.qux()
}