mirror of
https://github.com/bootdotdev/fcc-learn-golang-assets.git
synced 2025-12-13 08:41:15 +00:00
59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func sendMessage(msg message) {
|
|
fmt.Println(msg.getMessage())
|
|
}
|
|
|
|
type message interface {
|
|
getMessage() string
|
|
}
|
|
|
|
// don't edit below this line
|
|
|
|
type birthdayMessage struct {
|
|
birthdayTime time.Time
|
|
recipientName string
|
|
}
|
|
|
|
func (bm birthdayMessage) getMessage() string {
|
|
return fmt.Sprintf("Hi %s, it is your birthday on %s", bm.recipientName, bm.birthdayTime.Format(time.RFC3339))
|
|
}
|
|
|
|
type sendingReport struct {
|
|
reportName string
|
|
numberOfSends int
|
|
}
|
|
|
|
func (sr sendingReport) getMessage() string {
|
|
return fmt.Sprintf(`Your "%s" report is ready. You've sent %v messages.`, sr.reportName, sr.numberOfSends)
|
|
}
|
|
|
|
func test(m message) {
|
|
sendMessage(m)
|
|
fmt.Println("====================================")
|
|
}
|
|
|
|
func main() {
|
|
test(sendingReport{
|
|
reportName: "First Report",
|
|
numberOfSends: 10,
|
|
})
|
|
test(birthdayMessage{
|
|
recipientName: "John Doe",
|
|
birthdayTime: time.Date(1994, 03, 21, 0, 0, 0, 0, time.UTC),
|
|
})
|
|
test(sendingReport{
|
|
reportName: "First Report",
|
|
numberOfSends: 10,
|
|
})
|
|
test(birthdayMessage{
|
|
recipientName: "Bill Deer",
|
|
birthdayTime: time.Date(1934, 05, 01, 0, 0, 0, 0, time.UTC),
|
|
})
|
|
}
|