From 29a8bc342deb368de2735b823a033e0402f15eed Mon Sep 17 00:00:00 2001 From: MaurĂ­cio Antunes Date: Tue, 16 May 2023 00:24:41 -0300 Subject: feat: Another generics exercise --- exercises/generics/generics1/main.go | 6 +++--- exercises/generics/generics2/main.go | 20 ++++++++++++++++++++ info.toml | 13 +++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 exercises/generics/generics2/main.go diff --git a/exercises/generics/generics1/main.go b/exercises/generics/generics1/main.go index 9182fc5..009fe64 100644 --- a/exercises/generics/generics1/main.go +++ b/exercises/generics/generics1/main.go @@ -7,10 +7,10 @@ package main import "fmt" func main() { - Print("Hello, World!") - Print(42) + print("Hello, World!") + print(42) } -func Print(value) { +func print(value) { fmt.Println(value) } diff --git a/exercises/generics/generics2/main.go b/exercises/generics/generics2/main.go new file mode 100644 index 0000000..c0277a3 --- /dev/null +++ b/exercises/generics/generics2/main.go @@ -0,0 +1,20 @@ +// generics2 +// Make me compile! + +// I AM NOT DONE +package main + +import "fmt" + +type Number interface { + int +} + +func main() { + fmt.Println(addNumbers(1, 2)) + fmt.Println(addNumbers(1.0, 2.3)) +} + +func addNumbers(n1, n2 T) { + return n1 + n2 +} diff --git a/info.toml b/info.toml index dce4949..0e98601 100644 --- a/info.toml +++ b/info.toml @@ -303,3 +303,16 @@ func FuncName[T any](value T) { } """ + +[[exercises]] +name = "generics2" +path = "exercises/generics/generics2/main.go" +mode = "compile" +hint = """ +We can't mismatch types in arithmetic operations, but our functions can reused to other +types while sharing the same logic. + +In go, we can declare type constraints. It is the case of our Number interface. + +Don't forget the type signature. +""" -- cgit v1.2.3-70-g09d2