如何深入掌握Go语言标准库fmt及其内置函数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1336个文字,预计阅读时间需要6分钟。
plaintext内建函数+内建函数+介绍+close+主要用途:关闭channellen+主要用途:求长度,如string、array、slice、map、channelnew+主要用途:分配内存,主要用于分配值类型,如int、struct返回的是指针+make+主要用途:分配内存,主要用于分配结构体
内置函数
内置函数 介绍
close 主要用来关闭channel
len 用来求长度,比如string、array、slice、map、channel
new 用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
make 用来分配内存,主要用来分配引用类型,比如chan、map、slice
append 用来追加元素到数组、slice中
panic和recover 用来做错误处理 错误尝试恢复
panic可以在任何地方引发
recover只有在defer调用的函数中有效
package main
import "fmt"
// panic 和 recover
func funcA(){
fmt.Println("a")
}
func funcB(){
// 刚刚打开数据库连接
defer func () {
err := recover()
fmt.Println(err)
fmt.Println("释放数据库连接...")
}()
panic("出现严重错误!!!") // 程序崩溃退出
fmt.Println("b")
}
func funcC(){
fmt.Println("c")
}
func main() {
funcA()
funcB()
funcC()
}
- recover()必须搭配defer使用。
- defer一定要在可能引发panic的语句之前定义
fmt
标准库fmt
-
Print函数直接输出内容
-
Printf函数支持格式化输出字符串
-
Println函数会在输出内容的结尾添加一个换行符
格式化占位符
*printf系列函数都支持format格式化参数
通用占位符
布尔型
整型
浮点数与复数
字符串和[]byte
指针
宽度标识符
其他flag
获取输入
fmt.Scan
fmt.Scanf
fmt.Scanln
package main
import "fmt"
// fmt
func main(){
fmt.Print("中国")
fmt.Print("北京")
fmt.Println("_________")
fmt.Println("香蕉")
fmt.Println("西瓜")
// Printf("格式化字符串", 值)
// %T: 查看类型
// %d: 十进制数
// %b: 二进制数
// %o: 八进制数
// %x: 十六进制数
// %c: 字符
// %s: 字符串
// %p: 指针
// %v: 值
// %f: 浮点数
// %t: 布尔值
var m1 = make(map[string]int, 1)
m1["理想"] = 100
fmt.Printf("%v\n", m1) // map[理想:100]
fmt.Printf("%#v\n", m1) // map[string]int{"理想":100}
printBaifenbi(90)
// 整数 字符
fmt.Printf("%q\n", 65) // 'A'
// 浮点数和复数
fmt.Printf("%b\n", 3.14159265352938384626)
// 字符串
fmt.Printf("%q\n", "学习思考")
fmt.Printf("%5.2s\n", "书山有路勤为径")
// 获取用户输入
// var s string
// fmt.Scan(&s)
// fmt.Println("用户输入的内容是:",s)
// var (
// name string
// age int
// class string
// )
// fmt.Scanf("%s %d %s\n", &name, &age, &class)
// fmt.Println(name, age, class)
// fmt.Scanln(&name, &age, &class)
// fmt.Println(name, age, class)
fmt.Printf("%b\n", 10)
}
func printBaifenbi(num int) {
fmt.Printf("%d\n", num)
fmt.Printf("%d%%\n", num)
}
本文共计1336个文字,预计阅读时间需要6分钟。
plaintext内建函数+内建函数+介绍+close+主要用途:关闭channellen+主要用途:求长度,如string、array、slice、map、channelnew+主要用途:分配内存,主要用于分配值类型,如int、struct返回的是指针+make+主要用途:分配内存,主要用于分配结构体
内置函数
内置函数 介绍
close 主要用来关闭channel
len 用来求长度,比如string、array、slice、map、channel
new 用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
make 用来分配内存,主要用来分配引用类型,比如chan、map、slice
append 用来追加元素到数组、slice中
panic和recover 用来做错误处理 错误尝试恢复
panic可以在任何地方引发
recover只有在defer调用的函数中有效
package main
import "fmt"
// panic 和 recover
func funcA(){
fmt.Println("a")
}
func funcB(){
// 刚刚打开数据库连接
defer func () {
err := recover()
fmt.Println(err)
fmt.Println("释放数据库连接...")
}()
panic("出现严重错误!!!") // 程序崩溃退出
fmt.Println("b")
}
func funcC(){
fmt.Println("c")
}
func main() {
funcA()
funcB()
funcC()
}
- recover()必须搭配defer使用。
- defer一定要在可能引发panic的语句之前定义
fmt
标准库fmt
-
Print函数直接输出内容
-
Printf函数支持格式化输出字符串
-
Println函数会在输出内容的结尾添加一个换行符
格式化占位符
*printf系列函数都支持format格式化参数
通用占位符
布尔型
整型
浮点数与复数
字符串和[]byte
指针
宽度标识符
其他flag
获取输入
fmt.Scan
fmt.Scanf
fmt.Scanln
package main
import "fmt"
// fmt
func main(){
fmt.Print("中国")
fmt.Print("北京")
fmt.Println("_________")
fmt.Println("香蕉")
fmt.Println("西瓜")
// Printf("格式化字符串", 值)
// %T: 查看类型
// %d: 十进制数
// %b: 二进制数
// %o: 八进制数
// %x: 十六进制数
// %c: 字符
// %s: 字符串
// %p: 指针
// %v: 值
// %f: 浮点数
// %t: 布尔值
var m1 = make(map[string]int, 1)
m1["理想"] = 100
fmt.Printf("%v\n", m1) // map[理想:100]
fmt.Printf("%#v\n", m1) // map[string]int{"理想":100}
printBaifenbi(90)
// 整数 字符
fmt.Printf("%q\n", 65) // 'A'
// 浮点数和复数
fmt.Printf("%b\n", 3.14159265352938384626)
// 字符串
fmt.Printf("%q\n", "学习思考")
fmt.Printf("%5.2s\n", "书山有路勤为径")
// 获取用户输入
// var s string
// fmt.Scan(&s)
// fmt.Println("用户输入的内容是:",s)
// var (
// name string
// age int
// class string
// )
// fmt.Scanf("%s %d %s\n", &name, &age, &class)
// fmt.Println(name, age, class)
// fmt.Scanln(&name, &age, &class)
// fmt.Println(name, age, class)
fmt.Printf("%b\n", 10)
}
func printBaifenbi(num int) {
fmt.Printf("%d\n", num)
fmt.Printf("%d%%\n", num)
}

