aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2023-05-16 00:24:41 -0300
committerMaurĂ­cio Antunes <mauricio.abreua@gmail.com>2023-05-16 00:24:41 -0300
commit29a8bc342deb368de2735b823a033e0402f15eed (patch)
tree80325f2bfea8e8ffed38818f6b359b08110d4327
parent69021ec0e5195a42b0ed4be096cc4b2df3e13d47 (diff)
feat: Another generics exercise
-rw-r--r--exercises/generics/generics1/main.go6
-rw-r--r--exercises/generics/generics2/main.go20
-rw-r--r--info.toml13
3 files changed, 36 insertions, 3 deletions
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.
+"""