具有%e错误的字符串格式

Ala*_*orm 3 error-handling go

我遇到了一些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是用科学计数法格式化浮点数。该输出看起来不像科学计数法,所以我想知道

  1. 如果这是一个特定的符号,那是什么?(即是否有一个%.格式化选项,我可以用来获取该格式)

  2. 如果这不是一个特定的符号,那么到底是什么奇怪的事情在发生,导致以这种方式呈现错误?

  3. 我错过了什么愚蠢的,显而易见的事情,使我在这篇文章中所说的大部分错误?

pet*_*rSO 5

阅读Go文档。

软件包fmt

列印

格式错误:

如果为动词给出了无效的参数,例如为%d提供了字符串,则生成的字符串将包含问题的描述,如以下示例所示:

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)
Run Code Online (Sandbox Code Playgroud)

所有错误均以字符串“%!”开头。有时后面跟一个字符(动词),并以括号括起来。


例如,

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)

说明文件:

所有错误均以字符串“%!”开头。有时后面跟一个字符(动词),并以括号括起来。

Wrong type or unknown verb: %!verb(type=value)
  Printf("%d", hi):          %!d(string=hi)
Run Code Online (Sandbox Code Playgroud)