Sobes.tech
Junior — Senior

How to correctly compare error with nil in Go

livecode

Task condition

Determine what output the following program will produce when run.

package main

import "fmt"

type MyError struct {
 data string
}

func (e *MyError) Error() string {
 return e.data
}

func main() {
 err := foo(4)
 if err != nil {
  fmt.Println("oops")
 } else {
  fmt.Println("ok")
 }
}

func foo(i int) error {
 var err *MyError
 if i > 5 {
  err = &MyError{data: "i > 5"}
 }
 return err
}