- 一、前言
- 二、获取输入
- 1. fmt.Scan
- 2. fmt.Scanf
- 3. fmt.Scanln
- 三、向外输出
- 1. Print
- 2. Fprint
- 3. Sprint
- 参考链接
一、前言
fmt包实现了类似 C 语言 printf 和 scanf 的格式化I/O。
二、获取输入
Go语言fmt包下有fmt.Scan、fmt.Scanf、fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取数据。
1. fmt.Scan函数定义的签名如下:
func Scan(a ...interface{}) (n int, err error)
-
Scan 从标准输入扫描文本,读取由 空白符 分隔的值分别保存到本函数的参数中。(换行符也被视为空白符)
-
本函数返回成功扫描的 数据个数 和遇到的 任何错误 (注意调用该函数的接收值是两个)。如果读取的数据个数比提供的参数少,会返回一个错误报告原因。
使用示例:
package main
import (
"fmt"
)
func main() {
var (
name string
age int
married bool
)
fmt.Scan(&name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
输入:wsl 24 false
输出结果:扫描结果 name:wsl age:78 married:true
函数签名如下:
func Scanf(format string, a ...interface{}) (n int, err error)
- Scanf从标准输入扫描文本,按照 format 参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。
- 本函数返回成功扫描的数据个数和遇到的任何错误。
使用示例:
package main
import (
"fmt"
)
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 \n", name, age, married)
}
输入:1:wsl 2:25 3:false
输出结果:扫描结果 name:wsl age:25 married:false
函数签名如下:
func Scanln(a ...interface{}) (n int, err error)
- Scanln类似Scan,它在遇到换行时停止扫描。最后一个数据后面必须有换行或者到达结束位置。
- 本函数返回成功扫描的数据个数和遇到的任何错误。
使用示例:
package main
import (
"fmt"
)
func main() {
var (
name string
age int
married bool
)
fmt.Scanln(&name, &age, &married)
fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
}
输入:wsl 24 false
输出结果:扫描结果 name:wsl age:25 married:false
总结:
fmt.Scan() //扫描,必须所有参数都被填充后换行才结束扫描
fmt.Scanln()//扫描,但是遇到换行就结束扫描
fmt.Scanf() //格式化扫描,换行就结束
注意:
注意以上都是需要使用地址来取得扫描到的数据哈
三、向外输出 1. Print
Print 系列函数会将内容输出到系统的标准输出。
区别在于 Print 函数直接输出内容,Printf 函数支持格式化输出字符串,Println 函数会在输出内容的结尾添加一个换行符:
func Print(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
总结:
fmt.Print() //输出任意类型数据,不换行
fmt.Printf() //格式化输出数据,不换行
fmt.Println()//输出任意类型数据,并换行
具体实例:
package main
import (
"fmt"
)
func main() {
fmt.Print("在终端打印该信息。")
name := "枯藤"
fmt.Printf("我是:%s\n", name)
fmt.Println("在终端打印单独一行显示")
}
输出结果:
在终端打印该信息。我是:枯藤
在终端打印单独一行显示
2. Fprint
Fprint系列函数会将内容输出到一个 io.Writer 接口类型的变量 w 中,我们通常用这个函数往文件中写入内容。
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
3. Sprint
Sprint系列函数会把传入的数据生成并返回一个字符串。
func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string
示例代码:
package main
import (
"fmt"
)
func main() {
s1 := fmt.Sprint("枯藤")
name := "枯藤"
age := 18
s2 := fmt.Sprintf("name:%s,age:%d", name, age)
s3 := fmt.Sprintln("枯藤")
fmt.Println(s1, s2, s3)
}
输出结果:
枯藤 name:枯藤,age:18 枯藤
参考链接
- Golang标准库之fmt包
- Go语言(四)输入输出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)