跳过正文
  1. 文章/
  2. GoLang/
  3. 常用包/
  4. 标准包/

2、fmt

·1771 字·4 分钟· loading · loading · ·
GoLang 常用包 标准包
GradyYoung
作者
GradyYoung
标准包 - 点击查看当前系列文章
§ 2、fmt 「 当前文章 」

fmt包含有格式化I/O函数,类似于C语言的printf和scanf。格式字符串的规则来源于C,但更简单一些

标准输出
#

Print
#

func Print(a ...interface{}) (n int, err error)
  • Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格,返回写入的字节数和遇到的任何错误。

Println
#

func Println(a ...interface{}) (n int, err error)
  • Println采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符,返回写入的字节数和遇到的任何错误。

Printf
#

func Printf(format string, a ...interface{}) (n int, err error)
  • Printf根据format参数生成格式化的字符串并写入标准输出,返回写入的字节数和遇到的任何错误。

Fprint
#

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系列函数会将内容输出到一个io.Writer接口类型的变量w中,我们通常用这个函数往文件中写入内容。

Sprint
#

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 
  • Errorf函数根据format参数生成格式化字符串并返回一个包含该字符串的错误。

标准输入
#

Scan
#

func Scan(a ...interface{}) (n int, err error)
  • 功能:读取由空格分隔的输入数据,并将数据存储到提供的参数中。它不需要格式化字符串,而是依次将输入的值赋给传入的变量。
  • 输入终止条件:输入以空格或换行符为分隔符,读取的值必须与传入的参数数量匹配。
package main

import (
	"fmt"
)

func main() {
	var a string
	var b string
    //此处必须使用接收参数的变量指针
	fmt.Scan(&a, &b)
	fmt.Print(a, b)
}

Scanf
#

func Scanfformat string, a ...interface{}(n int, err error)
  • 功能:根据格式化字符串 format 从标准输入读取数据,并将数据存储到提供的参数中。
  • 输入终止条件:Scanf 读取输入时,会忽略空白字符,并且根据格式化字符串解析输入内容。输入可以包含换行符,但解析会按照格式字符串中的要求进行。

Scanln
#

func Scanln(a ...interface{}) (n int, err error)
  • 功能:与 fmt.Scan 类似,但会在读取完所有指定的参数后检查是否有多余的输入。它要求读取的最后一个输入参数必须位于行的末尾,否则会返回一个错误。
  • 输入终止条件:读取到换行符结束,并要求读取的参数数量与传入的变量数量匹配。
package main

import "fmt"

func main() {
	fmt.Println("Please Input:")
	var data string
	fmt.Scanln(&data)
	fmt.Printf("User Input: %s\n", data)
}

IO输入输出
#

这些函数是针对io.Writerio.Reader进行输入和输出

输出
#

func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

输入
#

func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

string输入输出
#

这些函数是针对string进行输入和输出

输出
#

func Sprint(a ...interface{}) string
func Sprintln(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string

输入
#

func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)

格式化占位符
#

通用
#

占位符 说明 例子 结果
%v 相应值的默认格式 Printf("%v",person) {lucy 18}
%+v 类似%v,但输出结构体时会添加字段名 Printf("%+v",person) {name:lucy age:18}
%#v 相应值的Go语法表示 Printf("#v",person) main.Person{name:"lucy", age:18}
%T 相应值的类型的Go语法表示 Printf("%T",person) main.Person
%% 字面上的百分号,并非值的占位符 Printf("%%") %

布尔
#

占位符 说明 例子 结果
%t 单词true或false Printf("%t",true) true

整数
#

占位符 说明 例子 结果
%b 二进制表示 Printf("%b",5) 101
%c 该值对应的unicode码值 Printf("%c",0x4E2d)
%d 十进制表示 Printf("%d",0x12) 18
%02d 两位整数 Printf("%02d",8) 08
%o 八进制表示 Printf("%o",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

浮点数和复数
#

占位符 说明 例子 结果
%e 科学计数法,如-1234.456e+78 Printf("%e",10.20) 1.020000e+01
%E 科学计数法,如-1234.456E+78 Printf("%E",10.20) 1.020000E+01
%f 有小数部分但无指数部分 Printf("%.2f", 3.1415926) 3.14
%9f 宽度9,默认精度 Printf("%9f", 88.88) 88.880000
%.2f 默认宽度,精度2 Printf("%.2f", 88.8888) 88.88
%g 根据实际情况采用%e%f格式(以获得更简洁、准确的输出) Printf("%g",10.20) 10.2
%G 根据实际情况采用%E%F格式(以获得更简洁、准确的输出) Printf("%G",10.20) 10.2+2i

字符串和字节数组
#

占位符 说明 例子 结果
%s 输出字符串表示(string类型或[]byte) Printf("%s",[]byte("Go语言")) Go语言
%q 双引号围绕的字符串,由Go语法安全的转译 Printf("%q","Go语言") "Go语言"
%x 十六进制,小写字母,每字节两个字符 Printf("%x","golang") 676f6c616e67
%X 十六进制,大写字母,每字节两个字符 Printf("%X","golang") 676F6C616E67

指针
#

占位符 说明 例子 结果
%p 十六进制表示,前缀 0x Printf("%p",&person) 0xc0420341c0
%#p 十六进制表示,不带前缀 0x Printf("%#p",&person) c0420341c0
标准包 - 点击查看当前系列文章
§ 2、fmt 「 当前文章 」