Code created while working through "100 Go mistakes and how to avoid them" by Teiva Harsanyi.
0

Configure Feed

Select the types of activity you want to include in your feed.

feat: add no45

Gabriel (Jul 9, 2024, 7:37 AM +0200) 7aae3c1c fc7147cf

+44
+44
no45/main.go
··· 1 + package main 2 + 3 + import ( 4 + "errors" 5 + "fmt" 6 + "log" 7 + ) 8 + 9 + type ErrNotEven struct { 10 + err error 11 + } 12 + 13 + func (ene *ErrNotEven) Add(err error) { 14 + ene.err = errors.Join(ene.err, err) 15 + } 16 + 17 + func (ene *ErrNotEven) Error() string { 18 + return ene.err.Error() 19 + } 20 + 21 + func assertEven(num *int) error { 22 + var err *ErrNotEven 23 + 24 + if num == nil { 25 + err = &ErrNotEven{} 26 + err.Add(errors.New("argument can not be null")) 27 + } 28 + 29 + if (*num % 2) != 0 { 30 + if err == nil { 31 + err = &ErrNotEven{} 32 + } 33 + err.Add(fmt.Errorf("number '%d' is not even", *num)) 34 + } 35 + 36 + return err 37 + } 38 + 39 + func main() { 40 + num := 2 41 + if err := assertEven(&num); err != nil { 42 + log.Fatalln(err) 43 + } 44 + }