Skip to content

Commit fab62d2

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

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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+
func (m *Manager) AddEmployee(e Employee) {
17+
m.Employees = append(m.Employees, e)
18+
}
19+
20+
func (m *Manager) RemoveEmployee(id int) {
21+
for i := len(m.Employees) - 1; i >= 0; i-- {
22+
e := m.Employees[i]
23+
if e.ID == id {
24+
m.Employees = append(m.Employees[:i], m.Employees[i+1:]...)
25+
}
26+
}
27+
}
28+
29+
func (m *Manager) GetAverageSalary() float64 {
30+
if len(m.Employees) == 0 {
31+
return 0.0
32+
}
33+
34+
avg := 0.0
35+
for _, e := range m.Employees {
36+
avg += e.Salary
37+
}
38+
return avg / float64(len(m.Employees))
39+
}
40+
func (m *Manager) FindEmployeeByID(id int) *Employee {
41+
for i, e := range m.Employees {
42+
if e.ID == id {
43+
return &m.Employees[i]
44+
}
45+
}
46+
return nil
47+
}
48+
49+
func main() {
50+
manager := Manager{}
51+
manager.AddEmployee(Employee{ID: 1, Name: "Alice", Age: 30, Salary: 70000})
52+
manager.AddEmployee(Employee{ID: 2, Name: "Bob", Age: 25, Salary: 65000})
53+
manager.RemoveEmployee(1)
54+
averageSalary := manager.GetAverageSalary()
55+
employee := manager.FindEmployeeByID(2)
56+
57+
fmt.Printf("Average Salary: %f\n", averageSalary)
58+
if employee != nil {
59+
fmt.Printf("Employee found: %+v\n", *employee)
60+
}
61+
}

0 commit comments

Comments
 (0)