当前位置: 首页 > 工具软件 > go_fmt > 使用案例 >

go语言中fmt包的基本用法

韦宣
2023-12-01

go语言中fmt包的基本用法  原文参考:https://www.liwenzhou.com/posts/Go/go_fmt/

fmt.print

func main() {
	fmt.Print("在终端打印信息")
	name := "沙河小王子"
	fmt.Printf("我是%s\n", name)
	fmt.Println("在终端打印一条显示")
	fmt.Println(name) //直接打印变量内容

}
输出结果
C:\Users\34826\AppData\Local\Temp\___go_build_main_go__1_.exe #gosetup
在终端打印信息我是沙河小王子
在终端打印一条显示
沙河小王子

Fprint

func main() {
	//fprint
	//向标准输出写入内容
	fmt.Fprintln(os.Stdout, "向标准输出写入此内容")
	fileObj, err := os.OpenFile("./xx.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("打开文件出错,err:", err)
		return
	}
	name := "沙河小王子"
	//向打开的文件句柄中写内容
	fmt.Fprintf(fileObj, "往文件中写入信息:%s", name)
	//注意只要满足io.writer的接口类型都支持写入
}
输出结果
C:\Users\34826\AppData\Local\Temp\___go_build_main_go__1_.exe #gosetup
向标准输出写入此内容

Sprint

func main() {
	//Sprint系列函数会吧传入的数据生成并返回一个字符串这里的S 貌似就是String的首字母
	s1 := fmt.Sprint("沙河小王子\n")
	name := "沙河小王子"
	age := 18
	s2 := fmt.Sprintf("name: %s, age %d\n", name, age)
	s3 := fmt.Sprintln("沙河小王子")
	fmt.Println(s1, s2, s3)
}

输出结果
C:\Users\34826\AppData\Local\Temp\___go_build_main_go__1_.exe #gosetup
沙河小王子
 name: 沙河小王子, age 18
 沙河小王子

*printf带有占位符的打印

//格式化占位符
//*printf结尾的方法都支持format格式化参数,这里我们按照占位符将被替换的变量类型进行划分,方便查询和记忆.
func main() {
	fmt.Printf("%v\n", 100)  //打印int类型
	fmt.Printf("%v\n", false) //打印bool类型
	o := struct {
		name string
	}{"小孙子"}
	fmt.Printf("%v\n", o) //打印struct类型
	fmt.Printf("%#v\n", o) //标准化打印输出struct类型
	fmt.Printf("%T\n", o) //打印类型
	fmt.Printf("100%%\n") //打印百分数
}
输出结果
C:\Users\34826\AppData\Local\Temp\___go_build_main_go__1_.exe #gosetup
100
false
{小孙子}
struct { name string }{name:"小孙子"}
struct { name string }
100%

整型

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

 

示例代码如下:

n := 65
fmt.Printf("%b\n", n)
fmt.Printf("%c\n", n)
fmt.Printf("%d\n", n)
fmt.Printf("%o\n", n)
fmt.Printf("%x\n", n)
fmt.Printf("%X\n", n)
输出结果如下:

1000001
A
65
101
41
41

字符串和[]byte

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

 获取输入

fmt.Scan

func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Scan(&name, &age, &married)                                     //这里接受三个值,分别以空格进行分隔.
	fmt.Printf("扫描结果:name : %v,age %v,married :%v", name, age, married) //这里打印接受的三个值.
}

输出结果
D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe
xiaowangzi  18 false
扫描结果:name : xiaowangzi,age 18,married :false

fmt.Scanf

func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Scanf("1,%s 2,%d 3,%t", &name, &age, &married)                  //这里预留了三个占位符,
	fmt.Printf("扫描结果:name : %s,age %d,married :%t", name, age, married) //这里打印接受的三个值.
}
输出结果
D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe
1,xiaohuozi 2,22 3,true
扫描结果:name : xiaohuozi,age 22,married :true


这里说明一下
    在使用Scanf的时候接受终端输入的格式要与终端中输入的格式一样才可以.要不然是无法接收到输入值的.

Scanln

//获取输入
func main() {
	var (
		name    string
		age     int
		married bool
	)
	fmt.Scanln(&name, &age, &married)                                   //这里输入接收值,遇到回车就进行结束接受扫描操作.
	fmt.Printf("扫描结果:name : %s,age %d,married :%t", name, age, married) //这里打印接受的三个值.
}
输出结果
D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe
xiaolaodi 22 true
扫描结果:name : xiaolaodi,age 22,married :true

说明一下:
    这里使用空格进行分隔,连续接受三个值.遇到换行符就终止
D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe
xiaolaodi
扫描结果:name : xiaolaodi,age 0,married :false
这里只输入了一个值,然后使用回车后就直接将一个值传入到代码中了,其余的是默认类型的零值.

bufio.Newreader

//使用bufil.NewReader
func main() {
	reader := bufio.NewReader(os.Stdin) //从标准输入生成读对象
	fmt.Print("请输入内容:")                //这里使用print不换行
	text, _ := reader.ReadString('\n') //这里表示读到换行符
	text = strings.TrimSpace(text)     //去掉前后空格
	fmt.Printf("%#v\n", text) //打印输入内容
}
输出结果
    D:\Go\Go\src\code.oldboy.com\studygolang\05lesson5\xueshengguanlixit>xueshengguanlixit.exe
请输入内容:asd asd fkash aksjdh kaakjl kjadfhlkasdfjlk
"asd asd fkash aksjdh kaakjl kjadfhlkasdfjlk"

 

 类似资料: