build-web-application-with-golang
build-web-application-with-golang copied to clipboard
对GO语言接口继承有些不太理解
package main
import (
"fmt"
)
type Singer interface {
Sing()
}
type Sayer interface {
Say()
}
type SayerSayer interface {
Singer
Sayer
}
type Person struct {
name string
}
type Student struct {
Person
age int
}
func (p *Person) Say() {
fmt.Printf("%s can Say\n", p.name)
}
func (s *Student) Sing() {
fmt.Printf("%s can Sing\n", s.name)
}
func main() {
//var ss SayerSayer = Student{Person{"jay"}, 25} //这里报错不太理解,为什么下面不报错
var ss SayerSayer = &Student{Person{"jay"}, 25}
ss.Sing()
ss.Say()
}
看了接口那一章,写了一段验证程序 注释报错那行不太理解,可以帮我讲解一下嘛!!!
我这样写Student是不是实现了上面三个接口?
func (p *Person) Say() {} 和 func (s *Student) Sing() {} 都是对象指针的方法,不能被对象使用 func (p Person) Say() {} 这一类可以被对象指针和对象同时使用,但是它的参数是传值的