编写一个学生考试系统
package main
import (
"fmt"
)
// 编写一个学生考试系统
type student struct {
Name string
Age int
Score int
}
// 将 Pupil 和 Graduate 共有的方法也绑定到 *student
func (s *student) Showinfo() {
fmt.Printf("学生的姓名=%v 年龄=%v 成绩=%v",s.Name,s.Age,s.Score)
}
func (s *student) Setscore(score int) {
s.Score = score
}
// 给 student 新增加一个方法,那么 pupil 和 graduate 都可以使用该方法
func (s *student) Getsum(n1 int,n2 int) int {
return n1+n2
}
// 小学生
type Pupil struct {
student // 嵌入student匿名结构体
}
func (p *Pupil) testing() {
fmt.Println("小学生正在考试中.......")
}
// 大学生
type Graduate struct {
student // 嵌入student匿名结构体
}
func (p *Graduate) testing() {
fmt.Println("大学生正在考试中.......")
}
func main() {
// 小学生
pu := Pupil{}
pu.student.Name = "tom~~"
pu.student.Age = 12
pu.testing()
pu.student.Setscore(98)
pu.student.Showinfo()
fmt.Println()
fmt.Println("小学生的res=",pu.student.Getsum(23,42))
// 大学生
fmt.Println()
big := Graduate{}
big.student.Name = "marrt"
big.student.Age = 26
big.testing()
big.student.Setscore(88)
big.student.Showinfo()
fmt.Println()
fmt.Println("大学生的res=",big.student.Getsum(12,32))
}
需要注意:
1)简写
点击查看代码
package main
import "fmt"
type A struct {
Name string
age int
}
func (a *A) Sayok() {
fmt.Println("A Sayok里的",a.Name)
}
func (a *A) Hello() {
fmt.Println("A Hello里的",a.Name)
}
type b struct {
A
}
func main() {
// 原来写法
var c b
c.A.Name = "tom"
c.A.age = 23
c.A.Hello()
c.A.Sayok()
// 简写
var d b
d.Name = "marry"
d.age = 33
d.Sayok()
d.Hello()
}
2)就近原则
点击查看代码