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接口实例一个公司要计算所有职员的薪水的主要内容,如果未能解决你的问题,请参考以下文章

韩顺平循序渐进学java 第21讲 集合(未完待续)

7.1 计算平均值

MySQL 题2

设计模式这样玩泰简单(Golang版)-中介模式

设计模式这样玩泰简单(Golang版)-中介模式

7.01 计算平均值