🌷 博主 libin9iOak带您 Go to Golang Language.✨
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🐥
前言:
在编程过程中,键盘输入和打印输出是基础而重要的操作。本文将介绍如何使用Go语言的fmt包进行打印输出,以及如何从键盘获取输入。通过学习这些知识,你将能够更加灵活地处理用户输入和输出信息,提升程序的交互性和可读性。
摘要:
本文将详细介绍打印输出和键盘输入的相关内容。首先,我们将深入研究fmt包,探讨其在打印输出中的作用和常用函数。接着,我们将学习如何导入包,确保代码正确运行。最后,我们将介绍如何利用fmt包和bufio包从键盘获取输入。通过本文的学习,你将能够熟练地处理打印输出和键盘输入,为编程工作提供便利。
Go键盘输入和打印输出
一、打印输出
1.1 fmt包
fmt包是Go语言中用于格式化输入和输出的标准库包。它提供了一系列函数和方法,可以方便地进行打印输出操作。
当使用Go语言进行打印输出时,可以使用fmt包来进行格式化输出。fmt是一个标准库包,提供了各种函数和方法来处理格式化输出的需求。
下面是fmt包中一些常用的函数和方法的详细解释:
Print
:该函数用于将给定的参数打印输出到标准输出(通常是控制台)。它可以接受多个参数,并按照它们的默认格式进行输出。不会自动换行。
func Print(a ...interface{}) (n int, err error)
Println
:该函数与Print函数类似,但会在输出的最后添加一个换行符,使得下一次输出会换到新的一行。
func Println(a ...interface{}) (n int, err error)
Printf
:该函数用于按照指定的格式进行输出。它的第一个参数是一个格式字符串,可以包含占位符,后续的参数根据占位符的位置来替换。
func Printf(format string, a ...interface{}) (n int, err error)
Sprint
:该函数用于将给定的参数格式化为字符串,并返回该字符串,而不进行实际的打印输出。它的用法和Print函数类似,但不会输出到标准输出。
func Sprint(a ...interface{}) string
Sprintln
:该函数与Sprint函数类似,但会在输出的最后添加一个换行符。
func Sprintln(a ...interface{}) string
Sprintf
:该函数与Printf函数类似,用于按照指定的格式将参数格式化为字符串,并返回该字符串。
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包提供了多个常用的打印函数,以下是其中几个常用的函数:
Print
:用于打印输出内容,不会自动换行。Println
:用于打印输出内容,并在结尾添加换行符。Printf
:用于格式化输出内容,可以使用占位符指定格式。Sprint
:用于将内容格式化为字符串,并返回该字符串。Sprintln
:用于将内容格式化为字符串,并在结尾添加换行符,返回该字符串。Sprintf
:用于将内容格式化为字符串,可以使用占位符指定格式,返回该字符串。
打印:
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)
格式化打印中的常用占位符:
格式化打印占位符: %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包提供了一些函数可以读取键盘输入。常用的函数有:
Scan
:用于从标准输入中读取数据,并将数据存储到指定的变量中。Scanln
:用于从标准输入中读取数据,并将数据存储到指定的变量中,读取到换行符时停止。Scanf
:用于从标准输入中按照指定的格式读取数据,并将数据存储到指定的变量中。
这些函数都需要传入指定变量的地址作为参数,以便将读取的数据存储到指定的变量中。
常用方法:
func Scan(a …interface{}) (n int, err error)
func Scanf(format string, a …interface{}) (n int, err error)
func Scanln(a …interface{}) (n int, err error)
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"
常用的函数有:
NewScanner
:用于创建一个Scanner对象,用于读取键盘输入。Scan
:用于从键盘输入中读取一行数据,并返回读取到的数据。Text
:用于获取Scanner对象当前位置的文本。
这些函数的使用方式可以根据具体需求选择,通过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.Println
函数输出提示信息,要求用户输入一个字符串。接着,创建一个
bufio.Reader
对象reader
,并传入os.Stdin
作为输入源,表示从标准输入读取数据。使用
reader.ReadString('\n')
方法读取输入的字符串,直到遇到换行符(‘\n’)为止,并将读取到的字符串赋值给变量s1
。最后,使用
fmt.Println
函数输出读取到的字符串。这段代码通过使用bufio包提供的缓冲读取功能,可以实现更高效和方便的键盘输入操作。用户在标准输入中输入一个字符串,按下回车键表示输入结束,然后该字符串就会被读取到并打印输出。
bufio包 拓展
bufio包提供了对输入输出进行缓冲处理的功能,它可以更高效地读取和写入数据。下面是bufio包的一些常用函数和使用案例:
NewScanner
:该函数用于创建一个Scanner对象,用于从指定的输入源读取数据。它接受一个io.Reader类型的参数作为输入源,可以是标准输入、文件或网络连接等。
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) }
- 上述示例中,通过
bufio.NewScanner(os.Stdin)
创建了一个Scanner对象,将标准输入作为输入源。然后使用scanner.Scan()
读取用户输入的一行数据,并使用scanner.Text()
获取输入的文本内容,最后打印输出。 Scan
:该方法用于从输入源中读取下一行数据,读取成功返回true,读取失败或到达输入源结尾返回false。
func (s *Scanner) Scan() bool
Text
:该方法用于获取Scanner对象当前位置的文本内容。
func (s *Scanner) Text() string
Split
:该函数用于自定义Scanner对象的分隔函数,用于按照指定的分隔符将输入源中的数据拆分成多个部分。
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()) // 逐行打印输出拆分后的内容 } }
- 上述示例中,我们使用
bufio.NewScanner
创建了一个Scanner对象,并将字符串"Hello,World"
作为输入源。通过调用scanner.Split(bufio.ScanWords)
指定了以空格作为分隔符,然后使用scanner.Scan()
读取下一部分数据,并通过scanner.Text()
获取该部分的文本内容进行输出。
bufio包的功能还包括对写入操作的缓冲处理,如Writer
类型可以对输出进行缓冲处理,提高写入效率。除了上述介绍的函数和方法外,bufio包还提供了其他功能丰富的函数和方法,可以根据具体需求进行使用。
总结:
键盘输入和打印输出是编程中不可或缺的基础操作。通过学习本文介绍的知识点,你已经掌握了使用Go语言进行打印输出和键盘输入的技巧。在实际的编程工作中,你可以根据具体需求,灵活运用这些知识,提高代码的质量和可读性。希望本文能够对你的学习和工作有所帮助,祝你编程愉快!
结语
通过今天的学习,您已经踏上了Golang的学习之旅。在未来的日子里,您将探索Golang的各个方面,从基础概念到高级技巧,从实际应用到性能优化。
学习一门编程语言是一个持续的过程,每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习,保持热情和好奇心,解决挑战并享受成功的喜悦。
在您的学习旅程中,不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验,向他人学习,并在开源项目或实际应用中展示您的技能。
如果您在学习过程中遇到困难或有任何问题,不要犹豫向社区和专家寻求帮助。持续学习,勇敢探索,您将在Golang领域取得令人瞩目的成就。
最后,感谢您的阅读和支持!祝愿您在未来的每一天中都能够成为一名精通Golang的开发者!
期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助,请随时告诉我。祝您在学习Golang的旅程中取得巨大成功!
如果您在学习过程中有任何疑惑,请点击下方名片,带您一对一快速入门 Go语言 的世界 ~