Hits

go 格式化打印

go fmt Printf

fmt.Printf("%v", name) 格式化打印指定类型的值。

一般情况

  • %v 默认类型打印,不确定类型的情况下使用
  • %#v 值的类型和值内容都打印出来
  • %T 打印值的类型
  • %% 打印 % 本身这个符号
类型 默认使用打印方式
bool: %t
int, int8 etc.: %d
uint, uint8 etc.: %d
%#x if printed %#v
float32, complex64, etc: %g
string: %s
chan: %p
pointer: %p

布尔类型

  • %t 打印布尔类型 true or false

整型

  • %b 打印二进制
  • %c 打印Unicode编码
  • %d 按十进制打印
  • %o 按八进制打印
  • %q 打印Unicode字节
  • %x 打印十六进制,a-f小写
  • %X 打印十六进制,A-F大写
  • %U Unicode format: U+1234; same as “U+%04X”

浮点数

  • %b 二进制指数表示法
  • %e 科学计数法,e小写
  • %E 科学计数法,E大写
  • %f 打印浮点数
  • %F 打印浮点数
  • %g 精确打印浮点数,科学计数法
  • %G 精确打印浮点数,科学计数法

字符串数组切片

  • %s 字符串或者数组或者切片等
  • %q 加双引号打印
  • %x
  • %X

指针

  • %p 打印指针
package main

import (
    "fmt"
)

type User_1 struct {
    ID   int
    Name string
    Age  int
}

func main() {
    user := User_1{
        ID:   1,
        Name: "lzw",
        Age:  1,
    }

    fmt.Printf("值和字段:%+v\n", user)
    fmt.Printf("值和类型:%#v\n", user)
    fmt.Printf("类型:%T\n", user)
    fmt.Printf("转义符:%%\n")
    fmt.Println("====================分割线==========================")

    // 布尔型
    boolParam := true
    fmt.Printf("布尔型:%t\n", boolParam)
    fmt.Println("====================分割线==========================")

    // 整型
    intParam := 65
    fmt.Printf("二进制:%b\n", intParam)
    fmt.Printf("Unicode编码:%c\n", 19968)
    fmt.Printf("十进制:%d\n", intParam)
    fmt.Printf("八进制:%o\n", intParam)
    fmt.Printf("八进制:%q\n", 19968)
    fmt.Printf("十六进制小写:%x\n", 19968)
    fmt.Printf("十六进制大写:%X\n", 19968)
    fmt.Printf("unicode format: %U\n", 19968)
    fmt.Println("====================分割线==========================")

    // 浮点型
    fmt.Printf("二进制浮点数:%b\n", -1.1)
    fmt.Printf("科学计数法小写:%e\n", -0.123456789)
    fmt.Printf("科学计数法大写:%E\n", -0.123456789)
    fmt.Printf("%f\n", -0.123456789)
    fmt.Printf("%F\n", -0.123456789)
    fmt.Printf("精确:%g\n", -0.123456789)
    fmt.Printf("精确:%G\n", -0.123456789)
    fmt.Println("====================分割线==========================")

    //String and slice of bytes (treated equivalently with these verbs):
    //%s    the uninterpreted bytes of the string or slice
    //%q    a double-quoted string safely escaped with Go syntax
    //%x    base 16, lower-case, two characters per byte
    //%X    base 16, upper-case, two characters per byte
    str := "1"
    str2 := map[string]string{
        "123":"213",
    }
    fmt.Printf("字符串或者数组切片:%s\n", str)
    fmt.Printf("字符串或者数组切片:%s\n", str2)
    fmt.Printf("加双引号打印:%q\n", str)
    fmt.Printf("十六进制打印:%x\n", "1")
    fmt.Printf("十六进制打印:%X\n", "2")

    // 打印指针
    fmt.Printf("指针:%p\n", str2)
}

本文链接:参与评论 »

--EOF--

专题「跟我一起学Go」的其它文章 »

Comments