1. 常用格式化参数
%v 值的默认格式表示
%+v 类似%v,但输出结构体时会添加字段名
%#v 值的Go语法表示
%T 值的类型的Go语法表示
%% 百分号
%t 单词true或false
%b 表示为二进制
%c 该值对应的unicode码值
%d 表示为十进制
%o 表示为八进制
%q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x 表示为十六进制,使用a-f
%X 表示为十六进制,使用A-F
%U 表示为Unicode格式:U+1234,等价于"U+%04X"
%b 无小数部分、二进制指数的科学计数法,如-123456p-78;参见strconv.FormatFloat
%e 科学计数法,如-1234.456e+78
%E 科学计数法,如-1234.456E+78
%f 有小数部分但无指数部分,如123.456
%F 等价于%f
%g 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出)
%G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)
%s 直接输出字符串或者[]byte
%q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示
%x 每个字节用两字符十六进制数表示(使用a-f)
%X 每个字节用两字符十六进制数表示(使用A-F)
%p 表示为十六进制,并加上前导的0x
2. 常用方法
2.1. 输出方法
1. fmt.Print()
Func: Print(a ...interface{}) (n int, err error)
Man: Print采用默认格式将其参数格式化并写入标准输出。
2. fmt.Println()
Func: Println(a ...interface{}) (n int, err error)
Man: Println采用默认格式将其参数格式化并写入标准输出,末尾添加换行符
3. fmt.Printf()
Func: Printf(format string, a ...interface{}) (n int, err error)
Man: 格式化输出的字符串
2.2. 输入方法
1. fmt.Scan()
Func: Scan(a ...interface{}) (n int, err error)
Man: 从标准输入读取内容赋值给指针变量,以空白符分割
2. fmt.Scanln()
Func: Scanln(a ...interface{}) (n int, err error)
Man: 从标准输入读取内容赋值给指针变量,以换行符分割
3. fmt.Scanf()
Func: Scanf(format string, a ...interface{}) (n int, err error)
Man: 从标准输入读取内容赋值给指针变量,根据format格式读取
3. 案例
3.1. 读取用户输入
package main
import (
"fmt"
"strings"
)
func main() {
var (
name string
age uint8
)
// 使用Scanln()读取
fmt.Print("请输入姓名:")
fmt.Scanln(&name)
fmt.Print("请输入年龄:")
fmt.Scanln(&age)
fmt.Printf("姓名:%s;年龄:%d\n", name, age)
fmt.Println(strings.Repeat("-",30))
// 使用Scanf()读取
fmt.Println("请依次输入姓名和年龄,用空格分割!")
fmt.Scanf("%s %d\n", &name, &age)
fmt.Printf("姓名:%s;年龄:%d\n", name, age)
}
[root@heyingsheng src]# go run studygo/day03/input/main.go
请输入姓名:张三
请输入年龄:19
姓名:张三;年龄:19
------------------------------
请依次输入姓名和年龄,用空格分割!
李四 20
姓名:李四;年龄:20