mirror of
https://github.com/bootdotdev/fcc-learn-golang-assets.git
synced 2025-12-11 15:51:16 +00:00
83 lines
1.6 KiB
Go
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)
|
|
}
|
|
}
|