Go语言fmt包中的输入输出基础

可以在官方页面下的 Packages 输入 fmt,里面有这个包中各个函数的介绍以及相关的用法,fmt包主要用来处理输入输出,格式化等相关问题,里面还有相关的例子可以看看,也可以使用goland查看各个函数的用法,下面是常见的输入输出函数的用法:

1. Scan 函数,从标准输入中读取文本,以空格作为分隔符将读取到的值存储到对应类型的变量中,换行符被视为空格,所以以空格和回车分隔输入数据都是可以的,直到读取到对应的参数列表为止,但是一旦数据规模超过了 10 ^ 5 那么使用 fmt.Scan() 或者 fmt.Println() 函数读取和输出数据是非常慢的,如果代码的时间复杂度较高那么肯定是会超时的,这个时候就需要使用 bufio.NewReader() ,bufio.NewWriter() ,fmt.Fscan() ,fmt.Fprintln() 等函数优化读取数据和输出数据的速度:

package main

import "fmt"

func main() {
	var (
		a int
		b int
	)
    // 输入数据的时候以空格和回车分隔都是可以的, 可以输入多个回车, 回车被视为空格
	fmt.Scan(&a, &b)
	fmt.Println(a, b)
}

2. Scanln 函数,与 Scan 函数是类似的,从标准输入中读取数据,以空格作为分隔符将读取到的数据存储到对应类型的参数上,遇到换行符就会停止读入,这也是与 Scan 函数不一样的一个点,两个函数其实在读取标准输入的时候都有其对应的应用场景,我们可以根据输入数据是哪一种方式确定使用哪一种方法:

package main

import "fmt"

func main() {
	var (
		a int
		b int
	)
	// 输入多个空格也是可以的
	fmt.Scanln(&a, &b)
	fmt.Println(a, b)
}

3. Scanf 函数,从标准输入中读取数据,类似于 c 语言的 scanf 函数,需要设置格式化字符串,以空格为分隔符将读取到的数据存储到对应类型的变量中:

package main

import "fmt"

func main() {
	var (
		a int
		b int
	)
    // 逗号前面的是格式化字符串, 用来匹配输入的数据
	fmt.Scanf("%d %d", &a, &b)
	fmt.Println(a, b)
}

4. Sprint 函数,使用默认的格式格式化字符串,当两个操作数都不是字符串的时候那么会添加空格,感觉主要是用来拼接字符串的,返回的结果是字符串类型,并且结果字符串中不会添加换行符,Sprintln 函数与 Sprint 函数类似,只是 Sprintln 函数会在两个操作数之间添加空格并且在末尾添加换行符:

package main

import "fmt"

func main() {
	const name, age = "Kim", 22
	// 使用默认的格式格式化字符串
	s := fmt.Sprint(name, " is ", age, " years old.\n")
	fmt.Println(s)
	a, b := 10, 2
	res := fmt.Sprint(a, b)
	fmt.Println(res)
}

5. Sprintf 函数,设置格式化字符串最终返回一个格式化之后的字符串,感觉与 Sprint 函数类似,返回的结果是字符串,并且结果字符串中不会添加换行符:

package main

import "fmt"

func main() {
	const name, age = "Kim", 22
	s := fmt.Sprintf("%s is %d years old.\n", name, age)
	fmt.Println(s)
}

6. Print函数,对于操作数使用默认的格式写入到标准输出中,当两个操作数不是字符串类型的时候会在两个操作数之间添加空格,函数返回的是写入的字节数目,与Sprint函数不一样的一个点是Sprint函数返回的是一个字符串,Print返回的是写入的字节数目,两者都可以用来输出对应的内容:

package main

import "fmt"

func main() {
	const name, age = "Kim", 22
    // Print函数两个操作数之间不会添加空格所以需要手动添加空格
	fmt.Print(name, " is ", age, " years old.\n")
}

7. Println 函数,与 Print 函数类似,Println 函数会在两个操作数之间添加空格并且在末尾会添加换行符,所以 Println 函数可以用来输出一行中以空格分隔的多个元素,以换行符结束,Println 函数返回的是写入的字节数目:

package main

import "fmt"

func main() {
	a, b, c := 10, 100, -10
	s := "helloworld!"
	// count为写入的字节数, _表示忽略掉当前函数的返回值
	count, _ := fmt.Println(a, b, s, c)
	fmt.Println(count)
}

8. Printf 函数,通过设置的格式化字符串写入到标准输出中,返回的是写入的字节数目:

package main

import "fmt"

func main() {
	const name, age = "Kim", 22
	fmt.Printf("%s is %d years old.\n", name, age)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值