Here is my program.
package main
import (
"errors"
"fmt"
)
func main() {
a := -1
err := assertPositive(a)
fmt.Printf("error: %s; int: %d\n", err, a)
fmt.Printf("error: %v; int: %d\n", err, a)
}
func assertPositive(a int) error {
if a <= 0 {
return errors.New("Assertion failure")
}
return nil
}
Here is the output.
error: Assertion failure; int: -1
error: Assertion failure; int: -1
In this program, it makes no difference whether I use %s or %v to print
the error object.
I have two questions.
- Is there any scenario while printing errors where it would make a
difference for
%sand%v? - What is the correct format specifier to use in this case?
%vand%sdoes. I would like to understand why you recommend%sforerrorobjects. Can you share the rationale please?Error()method and that's a string: Clearer.