Skip to content

Commit 2e91b06

Browse files
Add solution for Challenge 3 by clgp-aint-cool (#1560)
Auto-merged after 2 days with all checks passing. PR: #1560 Author: @clgp-aint-cool
1 parent d89b855 commit 2e91b06

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

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+
}
27+
}
28+
}
29+
30+
// GetAverageSalary calculates the average salary of all employees.
31+
func (m *Manager) GetAverageSalary() float64 {
32+
if len(m.Employees) == 0 {
33+
return 0
34+
}
35+
var totalSalary float64 = 0
36+
37+
for i:= range m.Employees{
38+
totalSalary += m.Employees[i].Salary
39+
}
40+
41+
return totalSalary / 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 i:=range m.Employees{
47+
if m.Employees[i].ID == id {
48+
return &m.Employees[i]
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)