Skip to content

Commit f315172

Browse files
committed
Add must
1 parent 4548d9c commit f315172

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

must/go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/mattn/go-generics-example/must
2+
3+
go 1.18

must/main.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main
2+
3+
import (
4+
"os"
5+
)
6+
7+
func Must[T any](v T, err error) T {
8+
if err != nil {
9+
panic(err.Error())
10+
}
11+
return v
12+
}
13+
14+
func Must2[T1 any, T2 any](v1 T1, v2 T2, err error) (T1, T2) {
15+
if err != nil {
16+
panic(err.Error())
17+
}
18+
return v1, v2
19+
}
20+
21+
func Must3[T1 any, T2 any, T3 any](v1 T1, v2 T2, v3 T3, err error) (T1, T2, T3) {
22+
if err != nil {
23+
panic(err.Error())
24+
}
25+
return v1, v2, v3
26+
}
27+
28+
func main() {
29+
f := Must(os.Create("test.txt"))
30+
defer os.Remove("test.txt")
31+
defer f.Close()
32+
f.Write([]byte("hello"))
33+
}

0 commit comments

Comments
 (0)