golang接口实例一个公司要计算所有职员的薪水
Posted 知其黑、受其白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang接口实例一个公司要计算所有职员的薪水相关的知识,希望对你有一定的参考价值。
阅读目录
场景
A、一个公司要计算所有职员的薪水。
B、每个职员的薪水计算方式不同。
接口示例
Animal 接口可以存储任何实现对象。
package main
import "fmt"
type Animal interface
Talk()
Eat()
Name() string
type Dog struct
func (d Dog) Talk()
fmt.Println("汪汪汪")
func (d Dog) Eat()
fmt.Println("我在吃骨头")
func (d Dog) Name() string
fmt.Println("我的名字叫旺财")
return "旺财"
// 接口实现
func main()
var d Dog
var a Animal
a = d
// b 需要实现 a 的所有方法,否则报错
a.Eat()
a.Talk()
a.Name()
var p Pig
a = p
a.Talk()
a.Eat()
a.Name()
type Pig struct
func (p Pig) Talk()
fmt.Println("哼哼哼")
func (p Pig) Eat()
fmt.Println("我造吃吃吃...")
func (p Pig) Name() string
fmt.Println("我的名字是八戒")
return "八戒"
PS E:\\TEXT\\test_go\\one> go run .\\main.go
我在吃骨头
汪汪汪
我的名字叫旺财
哼哼哼
我造吃吃吃...
我的名字是八戒
PS E:\\TEXT\\test_go\\one>
接口实现
package main
import "fmt"
type Employer interface
CalculateSalary() float32
// 程序员
type Programmer struct
Name string
Base float32
Achievements float32
func NewProgrammer(Name string, Base float32, Achievements float32) Programmer
return Programmer
Name: Name,
Base: Base,
Achievements: Achievements,
func (p Programmer) CalculateSalary() float32
return p.Base + p.Achievements*p.Base*0.5
func main()
p1 := NewProgrammer("wg程序员", 50000.00, 0)
p2 := NewProgrammer("chen程序员", 15000.00, 0)
var empList []Employer
empList = append(empList, p1)
empList = append(empList, p2)
s1 := NewSale("A销售", 1500.00, 0.003)
empList = append(empList, s1)
cost := calcAll(empList)
fmt.Printf("这个月的人力成本是:%f\\n", cost)
// 计算人力成本
func calcAll(e []Employer) float32
var cost float32
for _, v := range e
cost += v.CalculateSalary()
return cost
// 销售
type Sale struct
Name string
Base float32
Achievements float32
func NewSale(Name string, Base float32, Achievements float32) Sale
return Sale
Name: Name,
Base: Base,
Achievements: Achievements,
func (p Sale) CalculateSalary() float32
return p.Base + p.Achievements*p.Base*0.5
PS E:\\TEXT\\test_go\\one> go run .\\main.go
这个月的人力成本是:66502.250000
PS E:\\TEXT\\test_go\\one>
以上是关于golang接口实例一个公司要计算所有职员的薪水的主要内容,如果未能解决你的问题,请参考以下文章