Skip to content

Commit 1efee9c

Browse files
Add solution for Challenge 3 (#719)
Co-authored-by: go-interview-practice-bot[bot] <230190823+go-interview-practice-bot[bot]@users.noreply.github.com>
1 parent 4085963 commit 1efee9c

File tree

1 file changed

+72
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)