这是我的计划。
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
}
这是输出。
error: Assertion failure; int: -1
error: Assertion failure; int: -1
在这个程序中,我使用%s
或%v
进行打印没有区别
error
对象。
我有两个问题。
%s
和%v
的差异?答案 0 :(得分:5)
%v the value in a default format
...
%s the uninterpreted bytes of the string or slice
Also, more information about error
:
错误类型是接口类型。错误变量代表 any 可以将自己描述为字符串的值。
因此,请将其视为%s
。