【Go】输入输出 - fmt 包函数简介

【Go】输入输出 - fmt 包函数简介,第1张

文章目录
  • 一、前言
  • 二、获取输入
    • 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

2. fmt.Scanf

函数签名如下:

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

3. fmt.Scanln

函数签名如下:

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 枯藤

参考链接
  1. Golang标准库之fmt包
  2. Go语言(四)输入输出

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存