0
私のプログラムです。Go:%sまたは%vにエラーオブジェクトを出力する正しい書式指定子は何ですか?
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
、それは私がerror
オブジェクト 印刷する%s
または%v
を使用するかどうか違いはありません。
私には2つの質問があります。
- それは
%s
と%v
ため 違いになるだろう、エラーを印刷中にいずれかのシナリオがありますか? - この場合に使用する正しい書式指定子は何ですか?
%sを使用してください(しかし、%vと%sはfmtのパッケージの説明で調べてください)。 – Volker
@Volker '%v'と'%s'は何をしているのか分かります。私は 'error'オブジェクトに'%s'を推奨する理由を理解したいと思います。合理性を分かりますか? –
間接参照が少なくなりました。出力されるのは 'Error()'メソッドの出力であり、それは文字列です:Clearer。 – Volker