Here is my program.
package main
import (
"errors"
"fmt"
)
func main() {
a := -1
err := assertPositive(a)
fmt.Printf("error: %s; int: %d
", err, a)
fmt.Printf("error: %v; int: %d
", 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.
%s
and %v
?%v the value in a default format
...
%s the uninterpreted bytes of the string or slice
Also, more information about error
:
The error type is an interface type. An error variable represents any value that can describe itself as a string.
So, treat it as %s
.