From ecb4ea20a8a406448a415b4198e11c7e864b10db Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Tue, 19 Nov 2024 12:22:09 +0100 Subject: [PATCH] Initial commit with methods module --- .gitignore | 8 ++++++-- README.md | 1 + go.work | 3 +++ methods/go.mod | 1 + methods/main.go | 22 ++++++++++++++++++++++ methods/models/person.go | 14 ++++++++++++++ methods/models/presenter.go | 5 +++++ methods/models/student.go | 13 +++++++++++++ 8 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 go.work create mode 100644 methods/go.mod create mode 100644 methods/main.go create mode 100644 methods/models/person.go create mode 100644 methods/models/presenter.go create mode 100644 methods/models/student.go diff --git a/.gitignore b/.gitignore index 6f72f89..5733a24 100644 --- a/.gitignore +++ b/.gitignore @@ -18,8 +18,12 @@ # vendor/ # Go workspace file -go.work -go.work.sum +#go.work +#go.work.sum # env file .env + +# Intellij IDEA files +.idea +*.iml diff --git a/README.md b/README.md index 55a646b..b1393c1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # golang-nutshell + This repository is a nutshell for Golang diff --git a/go.work b/go.work new file mode 100644 index 0000000..c863d42 --- /dev/null +++ b/go.work @@ -0,0 +1,3 @@ +go 1.23.3 + +use ./methods diff --git a/methods/go.mod b/methods/go.mod new file mode 100644 index 0000000..97b7ca7 --- /dev/null +++ b/methods/go.mod @@ -0,0 +1 @@ +module nutshell/methods diff --git a/methods/main.go b/methods/main.go new file mode 100644 index 0000000..fef4696 --- /dev/null +++ b/methods/main.go @@ -0,0 +1,22 @@ +package main + +import ( + "fmt" + dto "nutshell/methods/models" +) + +func main() { + student := dto.Student{ + Person: dto.Person{ + Name: "Joe", + LastName: "Doe", + Age: 33, + }, + Class: "5A", + } + showUp(student) +} + +func showUp(p dto.Presenter) { + fmt.Println(p.Presentation()) +} diff --git a/methods/models/person.go b/methods/models/person.go new file mode 100644 index 0000000..07805a1 --- /dev/null +++ b/methods/models/person.go @@ -0,0 +1,14 @@ +package models + +import "fmt" + +type Person struct { + Name string + LastName string + Age int +} + +// Presentation - Greet everyone and show up +func (p Person) Presentation() string { + return fmt.Sprintf("Hi, everyone! I'm %s %s and I have %d years old.\n", p.Name, p.LastName, p.Age) +} diff --git a/methods/models/presenter.go b/methods/models/presenter.go new file mode 100644 index 0000000..27fc525 --- /dev/null +++ b/methods/models/presenter.go @@ -0,0 +1,5 @@ +package models + +type Presenter interface { + Presentation() string +} diff --git a/methods/models/student.go b/methods/models/student.go new file mode 100644 index 0000000..bc07510 --- /dev/null +++ b/methods/models/student.go @@ -0,0 +1,13 @@ +package models + +import "fmt" + +type Student struct { + Person + Class string +} + +// Presentation - Greet the teacher and show up +func (s Student) Presentation() string { + return fmt.Sprintf("Good morning teacher, I'm %s %s.\n", s.Person.Name, s.Person.LastName) +}