当前位置 : 主页 > 编程语言 > 其它开发 >

Go语言学习——标准库fmt、内置函数

来源:互联网 收集:自由互联 发布时间:2022-05-30
内置函数 内置函数 介绍 close 主要用来关闭channel len 用来求长度,比如string、array、slice、map、channel new 用来分配内存,主要用来分配值类型,比如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()
}
  1. recover()必须搭配defer使用。
  2. defer一定要在可能引发panic的语句之前定义

fmt

标准库fmt

  • Print函数直接输出内容

  • Printf函数支持格式化输出字符串

  • Println函数会在输出内容的结尾添加一个换行符

格式化占位符

*printf系列函数都支持format格式化参数

通用占位符

占位符 说明 %v 值的默认格式表示 %+v 类似%v,但输出结构体时会添加字段名 %#v 值的Go语法表示 %T 打印值的类型 %% 百分号

布尔型

占位符 说明 %t true或false

整型

占位符 说明 %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于”U+%04X” %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示

浮点数与复数

占位符 说明 %b 无小数部分、二进制指数的科学计数法,如-123456p-78 %e 科学计数法,如-1234.456e+78 %E 科学计数法,如-1234.456E+78 %f 有小数部分但无指数部分,如123.456 %F 等价于%f %g 根据实际情况采用%e或%f格式(以获得更简洁、准确的输出) %G 根据实际情况采用%E或%F格式(以获得更简洁、准确的输出)

字符串和[]byte

占位符 说明 %s 直接输出字符串或者[]byte %q 该值对应的双引号括起来的go语法字符串字面值,必要时会采用安全的转义表示 %x 每个字节用两字符十六进制数表示(使用a-f %X 每个字节用两字符十六进制数表示(使用A-F)

指针

占位符 说明 %p 表示为十六进制,并加上前导的0x

宽度标识符

占位符 说明 %f 默认宽度,默认精度 %9f 宽度9,默认精度 %.2f 默认宽度,精度2 %9.2f 宽度9,精度2 %9.f 宽度9,精度0

其他flag

占位符 说明 ’+’ 总是输出数值的正负号;对%q(%+q)会生成全部是ASCII字符的输出(通过转义); ’ ‘ 对数值,正数前加空格而负数前加负号;对字符串采用%x或%X时(% x或% X)会给各打印的字节之间加空格 ’-’ 在输出右边填充空白而不是默认的左边(即从默认的右对齐切换为左对齐); ’#’ 八进制数前加0(%#o),十六进制数前加0x(%#x)或0X(%#X),指针去掉前面的0x(%#p)对%q(%#q),对%U(%#U)会输出空格和单引号括起来的go字面值; ‘0’ 使用0而不是空格填充,对于数值类型会把填充的0放在正负号后面;

获取输入

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)
}
上一篇:【Java8新特性】Lambda表达式
下一篇:没有了
网友评论