Files
bootdotdev-fcc-learn-golang…/course/9-maps/exercises/2-mutating_maps/complete.go
wagslane 9be3074de6 first
2023-05-01 15:25:27 -06:00

83 lines
1.6 KiB
Go

package main
import (
"errors"
"fmt"
"sort"
)
func deleteIfNecessary(users map[string]user, name string) (deleted bool, err error) {
user, ok := users[name]
if !ok {
return false, errors.New("not found")
}
if !user.scheduledForDeletion {
return false, nil
}
delete(users, name)
return true, nil
}
// don't touch below this line
type user struct {
name string
number int
scheduledForDeletion bool
}
func test(users map[string]user, name string) {
fmt.Printf("Attempting to delete %s...\n", name)
defer fmt.Println("====================================")
deleted, err := deleteIfNecessary(users, name)
if err != nil {
fmt.Println(err)
return
}
if deleted {
fmt.Println("Deleted:", name)
return
}
fmt.Println("Did not delete:", name)
}
func main() {
users := map[string]user{
"john": {
name: "john",
number: 18965554631,
scheduledForDeletion: true,
},
"elon": {
name: "elon",
number: 19875556452,
scheduledForDeletion: true,
},
"breanna": {
name: "breanna",
number: 98575554231,
scheduledForDeletion: false,
},
"kade": {
name: "kade",
number: 10765557221,
scheduledForDeletion: false,
},
}
test(users, "john")
test(users, "musk")
test(users, "santa")
test(users, "kade")
keys := []string{}
for name := range users {
keys = append(keys, name)
}
sort.Strings(keys)
fmt.Println("Final map keys:")
for _, name := range keys {
fmt.Println(" - ", name)
}
}