100天精通Golang(基础入门篇)——第7天:深入学习键盘输入和打印输出,掌握常用函数和包

简介: 100天精通Golang(基础入门篇)——第7天:深入学习键盘输入和打印输出,掌握常用函数和包

🌷 博主 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语言 的世界 ~

目录
相关文章
|
3月前
|
Go
Golang的math包常用方法
这篇文章介绍了Golang的math包中的常量和常用方法,并通过示例代码展示了如何使用这些常量和方法。
186 87
Golang的math包常用方法
|
3月前
|
Go
Golang语言之函数(func)进阶篇
这篇文章是关于Golang语言中函数高级用法的教程,涵盖了初始化函数、匿名函数、闭包函数、高阶函数、defer关键字以及系统函数的使用和案例。
74 3
Golang语言之函数(func)进阶篇
|
3月前
|
Go
Golang语言之函数(func)基础篇
这篇文章深入讲解了Golang语言中函数的定义和使用,包括函数的引入原因、使用细节、定义语法,并通过多个案例展示了如何定义不返回任何参数、返回一个或多个参数、返回值命名、可变参数的函数,同时探讨了函数默认值传递、指针传递、函数作为变量和参数、自定义数据类型以及返回值为切片类型的函数。
87 2
Golang语言之函数(func)基础篇
|
2月前
|
安全 Java Go
【Golang入门】简介与基本语法学习
Golang语言入门教程,介绍了Go语言的简介、基本语法、程序结构、变量和常量、控制结构、函数、并发编程、接口和类型、导入包、作用域以及错误处理等关键概念,为初学者提供了一个全面的学习起点。
38 0
|
3月前
|
Unix Go
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
65 3
|
3月前
|
存储 Go
Golang语言基于go module方式管理包(package)
这篇文章详细介绍了Golang语言中基于go module方式管理包(package)的方法,包括Go Modules的发展历史、go module的介绍、常用命令和操作步骤,并通过代码示例展示了如何初始化项目、引入第三方包、组织代码结构以及运行测试。
71 3
|
3月前
|
Go
Golang语言基于GOPATH方式管理包(package)
这篇文章详细介绍了Golang语言中基于GOPATH方式管理包(package)的方法,包括包的概述、定义、引入格式、别名使用、匿名引入,以及如何快速入门自定义包,并通过具体代码案例展示了包的环境准备、代码编写、细节说明和程序运行。
46 3
|
3月前
|
Go
Golang语言之包依赖管理
这篇文章详细介绍了Go语言的包依赖管理工具,包括godep和go module的使用,以及如何在项目中使用go module进行依赖管理,还探讨了如何导入本地包和第三方库下载的软件包存放位置。
46 3
|
4月前
|
Go 开发者
|
4月前
|
存储 测试技术 Go
Golang 包:构建模块化代码的基石
【8月更文挑战第31天】
53 0