点击运行
package main import ( "fmt" ) // 定义一个接口 type SalaryCalculator interface { CalculateSalary() int } type Permanent struct { empId int basicpay int pf int } type Contract struct { empId int basicpay int } // 永久员工的薪资是 basicpay 与 pf 的和 func (p Permanent) CalculateSalary() int { return p.basicpay + p.pf } // 合同工只有basicpay func (c Contract) CalculateSalary() int { return c.basicpay } // 通过迭代SalaryCalculator 切片,计算员工的薪资综合,从而计算出公司的总花费 func totalExpense(s []SalaryCalculator) { expense := 0 for _, v := range s { expense = expense + v.CalculateSalary() } fmt.Printf("每个月总花费: $%d", expense) } func main() { pemp1 := Permanent{ empId: 1, basicpay: 5000, pf: 20, } pemp2 := Permanent{ empId: 2, basicpay: 6000, pf: 30, } cemp1 := Contract{ empId: 3, basicpay: 3000, } employees := []SalaryCalculator{pemp1, pemp2, cemp1} totalExpense(employees) }
运行结果 :
正在执行...