1.golang格式化输出
实例使用的结构体
go
package main
import "fmt"
type Website struct {
Name string
}
func main() {
// %v var
//定义结构体变量
site := Website{Name:"360"}
fmt.Printf("site: %#v\n", site)
}
package main
import "fmt"
type Website struct {
Name string
}
func main() {
// %v var
//定义结构体变量
site := Website{Name:"360"}
fmt.Printf("site: %#v\n", site)
}
1.1占位符
普通占位符
占位符 | 说明 | 举例 |
---|---|---|
%v | 响应变量的默认格式,v = var | Printf("%v",site), |
%+v | Printf("%+v", site) | |
%#v | 相应值go的语法表示,main.Website | Printf("%#v",site) |
%T | 相应值类型go的语法表示,main.Website | Printf("%T",site) |
%% | 字面上的百分号,并非值的占位符 | Printf("%%") |
布尔占位符
占位符 | 说明 | 举例 |
---|---|---|
%t | 单词 true或者false | Printf("%t", true) |
整数占位符
占位符 | 说明 | 举例 |
---|---|---|
%b | 二进制表示 | Printf("%b", 5) |
%c | 相应Unicode码点所表示的字符 | Printf("%c", 0x4E2D) |
%d | 十进制表示 | Printf("%d", 0x12) |
%o | 八进制表示 | Printf("%d", 10) |
%q | 单引号围绕的字符字面值,由Go语法安全转义 | Printf("%q", 0x12) |
%x | 十六进制表示,字母形式为小写a-f | Printf("%x", 13) |
%X | 十六进制表示,字母形式为大写A-F | Printf("%X", 13) |
%U | Unicode格式,U+1234,等同于 |
浮点数和复数的组成部分
占位符 | 说明 | 举例 |
---|---|---|
%b | 无小数部分的,指数为二的幂的科学计数法,与strconv.FormatFloat的b 转换格式一致 | |
%e | 科学计数法 | |
%E | 科学计数法 | Printf("%E", 10.2) |
%f | 有小数点而无指数 | Printf("%f", 10.2) |
%g | 根据情况选择%e 或%f以产生更紧(无末尾的0)输出 | Printf("%g", 10.20) |
%G | 根据情况选择%E或%F以产生更紧(无末尾的0)输出 | Printf("%G", 10.20+2i) |
字符串与字节切片
占位符 | 说明 | 举例 |
---|---|---|
%s | 输出字符串表示(string类型或[]byte) | Printf("%s",[]byte("多")) |
%q | 双引号围绕的字符串,由Go语法安全转义 | Printf("%q","多多") |
%x | 十六进制,小写字母,每字节两个字符 | Printf("%x","golang") |
%X | 十六进制,大写字母,每字节两个字符 | Printf("%X","golang") |
指针
占位符 | 说明 | 举例 |
---|---|---|
%p | 十六进制表示 | Printf("%p",&site) |
go
//定义了两个变量,想用键盘来录入这个两个变量
fmt.Println()//打印并换行
fmt.Printf()//格式化输出
fmt.Print()//打印输出
fmt.Scanln() //接收输入Scan
fmt.Scanf() //接收输入格式化输入作业
fmt.Scan() //接收输入作业
//定义了两个变量,想用键盘来录入这个两个变量
fmt.Println()//打印并换行
fmt.Printf()//格式化输出
fmt.Print()//打印输出
fmt.Scanln() //接收输入Scan
fmt.Scanf() //接收输入格式化输入作业
fmt.Scan() //接收输入作业
1.2 常用
%c | 字符型,可以把输入的数字按照 ASCII 码相应转换为对应字符 |
---|---|
%d | 一个十进制数值(基数为 10) |
%T | 使用 Go 语法输出的值的类型 |
%v | 使用默认格式输出的内置或自定义类型的值,或者是使用其类型的 String()方式输出的自定义值,如果该方法存在的话 |
输出
go
package main
import "fmt"
func main() {
a := 10
b := "hello"
c := 3.14
d := true
// %T 操作变量所属类型
fmt.Printf("a: %T\n,b: %T\n,c: %T\n,d: %T\n", a, b, c, d)
// %d 对应整形格式输出
// %s 对应字符串格式输出
// %c 对应字符格式输出
// %f 对应浮点格式输出
fmt.Printf("a: %d\n,b: %s\n,c: %f\n,d: %t\n", a, b, c, d)
fmt.Println("#########################")
// %v 自动匹配格式
fmt.Printf("a: %v\n,b: %v\n,c: %v\n,d: %v\n", a, b, c, d)
}
package main
import "fmt"
func main() {
a := 10
b := "hello"
c := 3.14
d := true
// %T 操作变量所属类型
fmt.Printf("a: %T\n,b: %T\n,c: %T\n,d: %T\n", a, b, c, d)
// %d 对应整形格式输出
// %s 对应字符串格式输出
// %c 对应字符格式输出
// %f 对应浮点格式输出
fmt.Printf("a: %d\n,b: %s\n,c: %f\n,d: %t\n", a, b, c, d)
fmt.Println("#########################")
// %v 自动匹配格式
fmt.Printf("a: %v\n,b: %v\n,c: %v\n,d: %v\n", a, b, c, d)
}
输入
go
func Scan2() {
var name string
var age int
fmt.Println("请输入姓名和年龄:")
// fmt.Scanln(&name, &age)
fmt.Scan(&name, &age)
fmt.Printf("name: %s, age: %d\n", name, age)
}
func Scan2() {
var name string
var age int
fmt.Println("请输入姓名和年龄:")
// fmt.Scanln(&name, &age)
fmt.Scan(&name, &age)
fmt.Printf("name: %s, age: %d\n", name, age)
}
类型别名
go
func Types() {
// 类型别名 关键字是type
// 给 int定义一个类型别名myint
type myint int
var a myint // 等价于 var a int
fmt.Printf("a: %v, type: %T\n", a, a)
}
func Types() {
// 类型别名 关键字是type
// 给 int定义一个类型别名myint
type myint int
var a myint // 等价于 var a int
fmt.Printf("a: %v, type: %T\n", a, a)
}