我遇到了一些go代码,这些代码似乎%e用于格式化错误以显示在屏幕上。简化的版本将是这样的代码
err := errors.New("La de da")
fmt.Printf("%e\n", err)
Run Code Online (Sandbox Code Playgroud)
输出
&{%!e(string=La de da)}
Run Code Online (Sandbox Code Playgroud)
但是,如果我看一下go手册,它说的%e是用科学计数法格式化浮点数。该输出看起来不像科学计数法,所以我想知道
如果这是一个特定的符号,那是什么?(即是否有一个%.格式化选项,我可以用来获取该格式)
如果这不是一个特定的符号,那么到底是什么奇怪的事情在发生,导致以这种方式呈现错误?
我错过了什么愚蠢的,显而易见的事情,使我在这篇文章中所说的大部分错误?
阅读Go文档。
列印
格式错误:
如果为动词给出了无效的参数,例如为%d提供了字符串,则生成的字符串将包含问题的描述,如以下示例所示:
Run Code Online (Sandbox Code Playgroud)Wrong type or unknown verb: %!verb(type=value) Printf("%d", hi): %!d(string=hi) Too many arguments: %!(EXTRA type=value) Printf("hi", "guys"): hi%!(EXTRA string=guys) Too few arguments: %!verb(MISSING) Printf("hi%d"): hi%!d(MISSING) Non-int for width or precision: %!(BADWIDTH) or %!(BADPREC) Printf("%*s", 4.5, "hi"): %!(BADWIDTH)hi Printf("%.*s", 4.5, "hi"): %!(BADPREC)hi Invalid or invalid use of argument index: %!(BADINDEX) Printf("%*[2]d", 7): %!d(BADINDEX) Printf("%.[2]d", 7): %!d(BADINDEX)所有错误均以字符串“%!”开头。有时后面跟一个字符(动词),并以括号括起来。
例如,
package main
import (
"errors"
"fmt"
)
func main() {
err := errors.New("La de da")
fmt.Printf("%e\n", err)
}
Run Code Online (Sandbox Code Playgroud)
游乐场:https : //play.golang.org/p/NKC6WWePyxM
输出:
&{%!e(string=La de da)}
Run Code Online (Sandbox Code Playgroud)
说明文件:
所有错误均以字符串“%!”开头。有时后面跟一个字符(动词),并以括号括起来。
Run Code Online (Sandbox Code Playgroud)Wrong type or unknown verb: %!verb(type=value) Printf("%d", hi): %!d(string=hi)
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |