Skip to content

Commit 734929a

Browse files
committed
feat: solve the challenge-3
1 parent e85e67d commit 734929a

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type Employee struct {
6+
ID int
7+
Name string
8+
Age int
9+
Salary float64
10+
}
11+
12+
type Manager struct {
13+
Employees []Employee
14+
}
15+
16+
// AddEmployee adds a new employee to the manager's list.
17+
func (m *Manager) AddEmployee(e Employee) {
18+
m.Employees = append(m.Employees, e)
19+
}
20+
21+
// RemoveEmployee removes an employee by ID from the manager's list.
22+
func (m *Manager) RemoveEmployee(id int) {
23+
for i, e := range m.Employees {
24+
if e.ID == id {
25+
m.Employees = append(m.Employees[:i], m.Employees[i+1:]...)
26+
return
27+
}
28+
}
29+
}
30+
31+
// GetAverageSalary calculates the average salary of all employees.
32+
func (m *Manager) GetAverageSalary() float64 {
33+
var sum float64
34+
35+
if len(m.Employees) == 0 {
36+
return sum
37+
}
38+
for _, e := range m.Employees {
39+
sum += e.Salary
40+
}
41+
return sum / float64(len(m.Employees))
42+
}
43+
44+
// FindEmployeeByID finds and returns an employee by their ID.
45+
func (m *Manager) FindEmployeeByID(id int) *Employee {
46+
for _, e := range m.Employees {
47+
if e.ID == id {
48+
return &e
49+
}
50+
}
51+
return nil
52+
}
53+
54+
func main() {
55+
manager := Manager{}
56+
manager.AddEmployee(Employee{ID: 1, Name: "Alice", Age: 30, Salary: 70000})
57+
manager.AddEmployee(Employee{ID: 2, Name: "Bob", Age: 25, Salary: 65000})
58+
manager.RemoveEmployee(1)
59+
averageSalary := manager.GetAverageSalary()
60+
employee := manager.FindEmployeeByID(2)
61+
62+
fmt.Printf("Average Salary: %f\n", averageSalary)
63+
if employee != nil {
64+
fmt.Printf("Employee found: %+v\n", *employee)
65+
}
66+
}

0 commit comments

Comments
 (0)