Compare commits

...
2 Commits
Author SHA1 Message Date
rmcampos d00ed5c591 chore: course completed 2026-08-07 23:22:34 +02:00
rmcampos 013dca68a9 feat: add struct userData 2026-08-07 21:24:23 +02:00
+31 -8
View File
@@ -2,14 +2,24 @@ package main
import (
"fmt"
"strconv"
"time"
"sync"
"booking-app/helper"
)
const conferenceTickets int = 50
var conferenceName = "Go Conference"
var remainingTickets uint = 50
var bookings = make([]map[string]string, 0)
var bookings = make([]UserData, 0)
type UserData struct {
firstName string
lastName string
email string
numberOfTickets uint
}
var wg = sync.WaitGroup{}
func main() {
greetUsers()
@@ -20,6 +30,8 @@ func main() {
if isValidName && isValidEmail && isValidNumber {
bookTicket(firstName, lastName, email, userTickets)
wg.Add(1)
go sendTicket(firstName, lastName, email, userTickets)
fmt.Printf("These are all the first names of our bookings: %v\n", buildFirstNames())
@@ -39,15 +51,26 @@ func main() {
}
}
}
wg.Wait()
}
func sendTicket(firstName string, lastName string, email string, userTickets uint) {
time.Sleep(50 * time.Second)
ticket := fmt.Sprintf("%v tickets for %v %v", userTickets, firstName, lastName)
fmt.Println("#######")
fmt.Printf("Sending ticket:\n %v \nto email address %v\n", ticket, email)
fmt.Println("######")
wg.Done()
}
func bookTicket(firstName string, lastName string, email string, userTickets uint) {
// create a map for a user
var userData = make(map[string]string)
userData["firstName"] = firstName
userData["lastName"] = lastName
userData["email"] = email
userData["numberOfTickets"] = strconv.FormatUint(uint64(userTickets), 10)
var userData = UserData {
firstName: firstName,
lastName: lastName,
email: email,
numberOfTickets: userTickets,
}
bookings = append(bookings, userData)
@@ -87,7 +110,7 @@ func greetUsers() {
func buildFirstNames() []string {
firstNames := []string{}
for _, userData := range bookings {
firstNames = append(firstNames, userData["firstName"])
firstNames = append(firstNames, userData.firstName)
}
return firstNames
}