golang 佔位符 -v,--v,--v 有什麼區別?

一、前言

平時遇到這樣的疑問,怎麼樣解決呢?

教大家一個小技巧,windows 直接 ctrl + 單擊 fmt 包名查看註釋即可得到官方的解釋,如下

二、案例說明

package main
import "fmt"
type Person struct {
  Name string
  Age  int
}
func main() {
  person := Person{
    Name: "test",
    Age:  15,
  }
  fmt.Printf("%v\n", person)
  fmt.Printf("%+v\n", person)
  fmt.Printf("%#v\n", person)
}

執行輸出如下:

{test 15}
{Name:test Age:15}
main.Person{Name:"test", Age:15}

2.1 總結

佔位符     說明          
%v      輸出所有的值信息 
%+v     打印結構體時會打印字段名
%#v     相應值的Go語法表示

三、其他佔位符說明

3.1 布爾

佔位符       說明                舉例                     輸出
%t          true 或 false。Printf("%t", true)       true

3.2 整數

佔位符     說明                                  舉例                       輸出
%b      二進制表示                             Printf("%b", 5)             101
%c      相應Unicode碼點所表示的字符              Printf("%c", 0x4E2D)        中
%d      十進制表示                             Printf("%d", 0x12)          18
%o      八進制表示                             Printf("%d", 10)            12
%q      單引號圍繞的字符字面值,由Go語法安全地轉義 Printf("%q", 0x4E2D)        '中'
%x      十六進制表示,字母形式爲小寫 a-f         Printf("%x", 13)             d
%X      十六進制表示,字母形式爲大寫 A-F         Printf("%x", 13)             D
%U      Unicode格式:U+1234,等同於 "U+%04X"   Printf("%U", 0x4E2D)         U+4E2D

3.3 字符串以及字節切片

佔位符     說明                              舉例                           輸出
%s      輸出字符串表示(string類型或[]byte)   Printf("%s", []byte("Go語言"))  Go語言
%q      雙引號圍繞的字符串,由Go語法安全地轉義  Printf("%q", "Go語言")         "Go語言"
%x      十六進制,小寫字母,每字節兩個字符      Printf("%x", "golang")         676f6c616e67
%X      十六進制,大寫字母,每字節兩個字符      Printf("%X", "golang")         676F6C616E67

3.4 指針

佔位符         說明                      舉例                             輸出
%p      十六進制表示,前綴 0x          Printf("%p", &people)             0x4f57f0

3.5 浮點數與複數

佔位符     說明                              舉例            輸出
%b      無小數部分的,指數爲二的冪的科學計數法,
        與 strconv.FormatFloat 的 'b' 轉換格式一致。例如 -123456p-78
%e      科學計數法,例如 -1234.456e+78        Printf("%e", 10.2)     1.020000e+01
%E      科學計數法,例如 -1234.456E+78        Printf("%e", 10.2)     1.020000E+01
%f      有小數點而無指數,例如 123.456        Printf("%f", 10.2)     10.200000
%g      根據情況選擇 %e 或 %f 以產生更緊湊的(無末尾的0)輸出 Printf("%g", 10.20)   10.2
%G      根據情況選擇 %E 或 %f 以產生更緊湊的(無末尾的0)輸出 Printf("%G", 10.20+2i) (10.2+2i)
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/iPU-zfmqtOOXk6Le_VIEmA