Skip to content

Commit c70e5ad

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

File tree

1 file changed

+79
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)