在这里插入图片描述

前言:

在编程过程中,键盘输入和打印输出是基础而重要的操作。本文将介绍如何使用Go语言的fmt包进行打印输出,以及如何从键盘获取输入。通过学习这些知识,你将能够更加灵活地处理用户输入和输出信息,提升程序的交互性和可读性。

摘要:

本文将详细介绍打印输出和键盘输入的相关内容。首先,我们将深入研究fmt包,探讨其在打印输出中的作用和常用函数。接着,我们将学习如何导入包,确保代码正确运行。最后,我们将介绍如何利用fmt包和bufio包从键盘获取输入。通过本文的学习,你将能够熟练地处理打印输出和键盘输入,为编程工作提供便利。

Go键盘输入和打印输出

一、打印输出

1.1 fmt包

fmt包是Go语言中用于格式化输入和输出的标准库包。它提供了一系列函数和方法,可以方便地进行打印输出操作。
当使用Go语言进行打印输出时,可以使用fmt包来进行格式化输出。fmt是一个标准库包,提供了各种函数和方法来处理格式化输出的需求。

下面是fmt包中一些常用的函数和方法的详细解释:

func Print(a ...interface{}) (n int, err error)
func Println(a ...interface{}) (n int, err error)
func Printf(format string, a ...interface{}) (n int, err error)
func Sprint(a ...interface{}) string
func Sprintln(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string

这些函数和方法提供了灵活的打印输出方式,可以根据不同的需求选择合适的函数来完成格式化输出操作。

fmt包实现了类似C语言printf和scanf的格式化I/O。格式化verb(‘verb’)源自C语言但更简单。

详见官网fmt的API:https://golang.google.cn/pkg/fmt/

在这里插入图片描述

1.2 导入包

在使用fmt包进行打印输出之前,需要先导入该包。导入包的语法如下:

import "fmt"

1.3 常用打印函数

fmt包提供了多个常用的打印函数,以下是其中几个常用的函数:

PrintPrintlnPrintfSprintSprintlnSprintf

打印:

格式化打印:

打印后换行

格式化打印中的常用占位符:

格式化打印占位符:
			%v,原样输出
			%T,打印类型
			%t,bool类型
			%s,字符串
			%f,浮点
			%d,10进制的整数
			%b,2进制的整数
			%o,8进制
			%x,%X,16进制
				%x:0-9,a-f
				%X:0-9,A-F
			%c,打印字符
			%p,打印地址
			 

示例代码:

package main

import (
	"fmt"
)

func main() {
	a := 100           //int
	b := 3.14          //float64
	c := true          // bool
	d := "Hello World" //string
	e := `Ruby`        //string
	f := 'A'
	fmt.Printf("%T,%b\n", a, a)
	fmt.Printf("%T,%f\n", b, b)
	fmt.Printf("%T,%t\n", c, c)
	fmt.Printf("%T,%s\n", d, d)
	fmt.Printf("%T,%s\n", e, e)
	fmt.Printf("%T,%d,%c\n", f, f, f)
	fmt.Println("-----------------------")
	fmt.Printf("%v\n", a)
	fmt.Printf("%v\n", b)
	fmt.Printf("%v\n", c)
	fmt.Printf("%v\n", d)
	fmt.Printf("%v\n", e)
	fmt.Printf("%v\n", f)

}

运行结果:

在这里插入图片描述

二、键盘输入

2.1 fmt包读取键盘输入

fmt包提供了一些函数可以读取键盘输入。常用的函数有:

ScanScanlnScanf

这些函数都需要传入指定变量的地址作为参数,以便将读取的数据存储到指定的变量中。

常用方法:

package main

import (
	"fmt"
)

func main() {
	var x int
	var y float64
	fmt.Println("请输入一个整数,一个浮点类型:")
	fmt.Scanln(&x,&y)//读取键盘的输入,通过操作地址,赋值给x和y   阻塞式
	fmt.Printf("x的数值:%d,y的数值:%f\n",x,y)

	fmt.Scanf("%d,%f",&x,&y)
	fmt.Printf("x:%d,y:%f\n",x,y)
}

运行结果:

在这里插入图片描述

2.2 bufio包读取

https://golang.google.cn/pkg/bufio/

除了使用fmt包进行键盘输入外,还可以使用bufio包进行键盘输入操作。bufio包提供了一些功能更强大的函数,可以更方便地进行键盘输入操作。

首先需要导入bufio包,导入语法如下:

import "bufio"

常用的函数有:

NewScannerScanText

这些函数的使用方式可以根据具体需求选择,通过Scanner对象可以更灵活地进行键盘输入操作。

bufio包中都是IO操作的方法:

先创建Reader对象:
在这里插入图片描述

然后就可以各种读取了:

在这里插入图片描述

示例代码:

package main

import (
	"fmt"
	"os"
	"bufio"
)

func main() {
	fmt.Println("请输入一个字符串:")
	reader := bufio.NewReader(os.Stdin)
	s1, _ := reader.ReadString('\n')
	fmt.Println("读到的数据:", s1)

}

运行效果:

在这里插入图片描述源码解释:

fmt.Printlnbufio.Readerreaderos.Stdinreader.ReadString('\n')s1fmt.Println

这段代码通过使用bufio包提供的缓冲读取功能,可以实现更高效和方便的键盘输入操作。用户在标准输入中输入一个字符串,按下回车键表示输入结束,然后该字符串就会被读取到并打印输出。

bufio包 拓展

bufio包提供了对输入输出进行缓冲处理的功能,它可以更高效地读取和写入数据。下面是bufio包的一些常用函数和使用案例:

func NewScanner(r io.Reader) *Scanner
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    fmt.Println("Enter your name:")
    scanner.Scan() // 读取输入的一行数据
    name := scanner.Text() // 获取输入的文本内容
    fmt.Println("Hello,", name)
}
func (s *Scanner) Scan() bool
func (s *Scanner) Text() string
func (s *Scanner) Split(split SplitFunc)
package main

import (
    "bufio"
    "fmt"
    "strings"
)

func main() {
    input := "Hello,World"
    scanner := bufio.NewScanner(strings.NewReader(input))
    scanner.Split(bufio.ScanWords) // 使用空格作为分隔符

    for scanner.Scan() {
        fmt.Println(scanner.Text()) // 逐行打印输出拆分后的内容
    }
}
Writer

总结:

键盘输入和打印输出是编程中不可或缺的基础操作。通过学习本文介绍的知识点,你已经掌握了使用Go语言进行打印输出和键盘输入的技巧。在实际的编程工作中,你可以根据具体需求,灵活运用这些知识,提高代码的质量和可读性。希望本文能够对你的学习和工作有所帮助,祝你编程愉快!

在这里插入图片描述

结语

通过今天的学习,您已经踏上了Golang的学习之旅。在未来的日子里,您将探索Golang的各个方面,从基础概念到高级技巧,从实际应用到性能优化。
学习一门编程语言是一个持续的过程,每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习,保持热情和好奇心,解决挑战并享受成功的喜悦。

在您的学习旅程中,不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验,向他人学习,并在开源项目或实际应用中展示您的技能。

如果您在学习过程中遇到困难或有任何问题,不要犹豫向社区和专家寻求帮助。持续学习,勇敢探索,您将在Golang领域取得令人瞩目的成就。

最后,感谢您的阅读和支持!祝愿您在未来的每一天中都能够成为一名精通Golang的开发者!

期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助,请随时告诉我。祝您在学习Golang的旅程中取得巨大成功!

如果您在学习过程中有任何疑惑,请点击下方名片,带您一对一快速入门 Go语言 的世界 ~