漫谈golang之fmt格式化模块
fmt 漫谈
fmt常用的格式化字符串
- %v 是个通用的占位符。它会自动将变量转换为默认格式的字符串,这在打印字符串或数字等原语时非常有用,而且不需要特定的选项
- %#v 根据go语法打印。尤其在打印struct和切片时特别直观
package main
import (
"fmt"
)
//1
var brand = "ALIENWARE"
type computer struct {
name string
price float32
config []string
brand *string
}
func main() {
myComputer := computer{"tktk", 18000.00, []string{"i7 9700k", "RTX 2080Ti", "DDR4 32G"}, &brand}
fmt.Printf("my computer is: \n%#v\n", myComputer)
fmt.Printf("my computer is: \n%v\n", myComputer)
}
结果:
go version go1.12 linux/amd64
my computer is:
main.computer{name:"tktk", price:18000, config:[]string{"i7 9700k", "RTX 2080Ti", "DDR4 32G"}, brand:(*string)(0x5531b0)}
my computer is:
{tktk 18000 [i7 9700k RTX 2080Ti DDR4 32G] 0x5531b0}
}
- %T 打印变量的类型
- %d 打印10进制整数
- %x和%X 打印16进制整数
- %f 打印浮点数,可以通过%8.2f,%-8.2f,%08.2f,% f等来控制打印字符串的空格
- %q 能打印加引号的字符串。当您的数据可能有不可见字符(如空字符串)时,这是有用的,因为引用的字符串将它们打印为转义序列。
- %p 打印变量的指针地址。当您正在调试代码并且希望检查不同的指针变量是否引用相同的数据时,这个方法非常有用。
fmt Printing
FMT包的主要用途是格式化字符串。这些格式化函数按其输出类型-STDOUT、io.Writer和String进行分组。
- 打印到stdout
// 按照默认格式打印一系列变量
func Print(a ...interface{}) (n int, err error)
// 相比Print,在变量之间插入了空格,并最后添加上换行符
func Println(a ...interface{}) (n int, err error)
// 根据自定义格式化字符串,能打印不同格式的输出
func Printf(format string, a ...interface{}) (n int, err error)
- 打印到io.Writer
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
Fprint是更通用的形式,print仅仅是Fprint(os.Stdout, "Hello World!")的包装
- 格式为字符串
func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string
当大量采用Sprint产生字符串,会产生瓶颈问题。
- Errorf()
func Errorf(format string, a ...interface{}) error {
return errors.New(Sprintf(format, a...))
}
Scanning
fmt包也有从stdin,io.Reader, string读取并格式化的api。
- 从stdin读取
func Scan(a ...interface{}) (n int, err error)
func Scanf(format string, a ...interface{}) (n int, err error)
func Scanln(a ...interface{}) (n int, err error)
- 从io.Reader读取
func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
- 从string读取
func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
var name string
var age int
if _, err := fmt.Scan(&name, &age); err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("Your name is: %s\n", name)
fmt.Printf("Your age is: %d\n", age)
执行交互
$ go run main.go
Jane 25
Your name is: Jane
Your age is: 25
总之,如果从命令行读取并解析到指定的interface,如例子中的name,age,我们有更好用的flag包可以使用
漫谈golang之fmt格式化模块的更多相关文章
- Golang之fmt格式“占位符”
golang的fmt包实现了格式化I/O函数: package main import "fmt" type Human struct { Name string } func m ...
- golang中fmt的'占位符'使用
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...
- 『GoLang』fmt包的使用
目录 1. fmt 包初识 2. 格式化 verb 应用 2.1 通用 2.2 布尔值 2.3 整数 2.4 浮点数与复数 2.5 字符串和 []byte 2.6 指针 2.7 其他 flag 2.8 ...
- 漫谈golang设计模式 简易工厂模式
目前学习golang的主要需求是为了看懂TiDB的源码,下面我们复习一下简易工厂模式的思想 工厂类型分为三种,创建型模式,结构型模式,行为型模式. 简单工厂 使用场景:考虑一个简单的API设计,一个模 ...
- golang的fmt
前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 注意!!!!!!!!!! 单词都是连着的,我是为了看着方便.理解方便才分开的 1.fmt 中文文档 [英文文档 ...
- Golang学习 - fmt 包
------------------------------------------------------------ // Print 将参数列表 a 中的各个参数转换为字符串并写入到标准输出中. ...
- Golang之字符串格式化
字符串格式化 // Go 之 字符串格式化 // // Copyright (c) 2015 - Batu // package main import ( "fmt" ) typ ...
- 基础知识 - Golang 中的格式化输入输出
------------------------------------------------------------ [格式化输出] // 格式化输出:将 arg 列表中的 arg 转换为字符串输 ...
- golang 时间戳 时间格式化 获取当前时间 timestamp 计算时间差
获取当前时间 func Now func Now() Time 1 Now returns the current local time. func (Time) UTC func (t Time) ...
随机推荐
- Vue+Webpack构建移动端京东金融(一、开发前准备)
一.开发前准备 1.node环境搭建 去node.js官网下载长期支持版本的node,采用全局安装,安装方式自行百度 网址:https://nodejs.org/zh-cn/ 安装后在cmd命令行运行 ...
- js string和number
number Js只有一种数字类型(包括整型,浮点型) 极大或极小的可用科学计数法来表示.(7.7123e+1) 所有js数字均为64位 Js所有的数字都存储为浮点型 小数的最大位数是17位 0开头的 ...
- 关于python-flask中规范创建项目的几个关键py项目文件
1.config.py——配置文件 DEBUG = True DIALECT = 'mysql' DRIVER = 'mysqldb' USERNAME = 'root' PASSWORD = '' ...
- 【翻译】Flume 1.8.0 User Guide(用户指南)
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- xml文档格式学习笔记
xml入门经典 (pdf书籍) https://www.cnblogs.com/zhaopengcheng/p/6848802.html
- lombok学习
lombok的官方地址:https://projectlombok.org/ lombok的Github地址:https://github.com/rzwitserloot/lombok lombok ...
- Python开发——17.CSS
一.CSS 1.概述 CSS(Cascading Style Sheets),层叠样式表,用来控制网页数据的表现,使网页的表现与数据内容分离. 2.引入方式 (1)行内式 <body> & ...
- Python Flask学习笔记之模板
Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...
- influence maximization 第二弹
Robust Influence Maximization 首先简要介绍一下这个问题:在一个社交网络图中寻找固定数量的节点,使得这些节点对所有节点的影响值尽可能的大.先对这个问题给出形式化的定义:给一 ...
- 有哪些知名的公司在用Python
谷歌:Google App Engine.code.Google.com.Google earth.谷歌爬虫.Google广告等项目都在大量使用Python开发 CIA:美国中情局网站就是用Pytho ...