Skip to content

Commit aef9ade

Browse files
Add solution for Challenge 3
1 parent a7ac764 commit aef9ade

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
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, emp := range m.Employees {
24+
if emp.ID == id {
25+
m.Employees = append(m.Employees[:i], m.Employees[i+1:]...)
26+
break
27+
}
28+
}
29+
}
30+
31+
// GetAverageSalary calculates the average salary of all employees.
32+
func (m *Manager) GetAverageSalary() float64 {
33+
if len(m.Employees) == 0 {
34+
return 0.0
35+
}
36+
37+
sum := 0.0
38+
for _, emp := range m.Employees {
39+
sum += emp.Salary
40+
}
41+
42+
return sum/float64(len(m.Employees))
43+
}
44+
45+
// FindEmployeeByID finds and returns an employee by their ID.
46+
func (m *Manager) FindEmployeeByID(id int) *Employee {
47+
48+
for _, emp := range m.Employees {
49+
if emp.ID == id {
50+
return &emp
51+
}
52+
}
53+
54+
return nil
55+
}
56+
57+
func main() {
58+
manager := Manager{}
59+
manager.AddEmployee(Employee{ID: 1, Name: "Alice", Age: 30, Salary: 70000})
60+
manager.AddEmployee(Employee{ID: 2, Name: "Bob", Age: 25, Salary: 65000})
61+
manager.RemoveEmployee(1)
62+
averageSalary := manager.GetAverageSalary()
63+
employee := manager.FindEmployeeByID(2)
64+
65+
fmt.Printf("Average Salary: %f\n", averageSalary)
66+
if employee != nil {
67+
fmt.Printf("Employee found: %+v\n", *employee)
68+
}
69+
}

0 commit comments

Comments
 (0)