diff --git a/module-3/task1/go.mod b/module-3/task1/go.mod new file mode 100644 index 0000000..45c1c10 --- /dev/null +++ b/module-3/task1/go.mod @@ -0,0 +1,3 @@ +module honestit/module3/task1 + +go 1.16 diff --git a/module-3/task1/main.go b/module-3/task1/main.go new file mode 100644 index 0000000..a868fca --- /dev/null +++ b/module-3/task1/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "fmt" +) + +func main() { + fmt.Println("Hello module-3") +} diff --git a/module-3/task1/pointers/pointers_test.go b/module-3/task1/pointers/pointers_test.go index d9e1c78..5a799bf 100644 --- a/module-3/task1/pointers/pointers_test.go +++ b/module-3/task1/pointers/pointers_test.go @@ -14,9 +14,9 @@ func Test_doubleValues(t *testing.T) { } for i, tt := range tests { - out, expected := *tt.in, *tt.expected + out, expected := tt.in, tt.expected if DoubleValues(tt.in); expected == out { - t.Errorf("Unexpected result in Test #%d, expected %+v, got %+v", i, tt.expected, *tt.in) + t.Errorf("Unexpected result in Test #%d, expected %+v, got %+v", i, tt.expected, tt.in) } } } diff --git a/module-3/task2/go.mod b/module-3/task2/go.mod new file mode 100644 index 0000000..69e43d5 --- /dev/null +++ b/module-3/task2/go.mod @@ -0,0 +1,3 @@ +module honestit/module3/task2 + +go 1.16 diff --git a/module-3/task2/main.go b/module-3/task2/main.go new file mode 100644 index 0000000..c49ab7b --- /dev/null +++ b/module-3/task2/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "fmt" +) + +func main() { + fmt.Println("Hello task 2 of module 3") +} diff --git a/module-3/task2/slices/slice.go b/module-3/task2/slices/slice.go index 3e593be..25e7a38 100644 --- a/module-3/task2/slices/slice.go +++ b/module-3/task2/slices/slice.go @@ -1,10 +1,17 @@ package slices +import ( + "sort" +) + func SortStringsInPlace(s []string) { + sort.Strings(s) } func SortStringsPure(s []string) []string { - + copy := s + sort.Strings(copy) + return copy } type User struct { @@ -12,10 +19,29 @@ type User struct { LastName string } +type UserList []User + +func (u UserList) Len() int { + return len(u) +} + +func (u UserList) Less(i, j int) bool { + return u[i].FirstName < u[j].FirstName || (u[i].FirstName == u[j].FirstName && u[i].LastName < u[j].LastName) + +} + +func (u UserList) Swap(i, j int) { + u[i], u[j] = u[j], u[i] +} + func SortUsersPure(s []User) []User { - return r + var userList UserList = s + sort.Sort(userList) + return userList } func SortUsersPureDesc(s []User) []User { - return r + var userList UserList = s + sort.Sort(sort.Reverse(userList)) + return userList } diff --git a/module-3/task3/go.mod b/module-3/task3/go.mod new file mode 100644 index 0000000..ce28f3d --- /dev/null +++ b/module-3/task3/go.mod @@ -0,0 +1,3 @@ +module honestit/module3/task3 + +go 1.16 diff --git a/module-3/task3/main.go b/module-3/task3/main.go new file mode 100644 index 0000000..826b99b --- /dev/null +++ b/module-3/task3/main.go @@ -0,0 +1,9 @@ +package main + +import ( + "fmt" +) + +func main() { + fmt.Println("Hello from task 3 of module 3") +} diff --git a/module-3/task3/maps/maps.go b/module-3/task3/maps/maps.go index 9d577ed..1cc5af1 100644 --- a/module-3/task3/maps/maps.go +++ b/module-3/task3/maps/maps.go @@ -1,4 +1,23 @@ package maps +import ( + "fmt" + "sort" + "strings" +) + func SortedValues(m map[int]string) string { + var keys []int + for key := range m { + keys = append(keys, key) + } + sort.Ints(keys) + fmt.Printf("Keys: %v\n", keys) + + var sb strings.Builder + for _, key := range keys { + val := m[key] + sb.WriteString(val) + } + return sb.String() }