Go语言标准输入输出库的基本使用教程

 更新时间:2022年02月14日 10:20:48   作者:良猿  
输入输出在任何一门语言中都必须提供的一个功能,下面这篇文章主要给大家介绍了关于Go语言标准输入输出库的基本使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

fmt

fmt是go语言中的格式化输入输出库,其中主要分为两个部分,分别是输出部分和输入部分。

输出

Print

Print函数的主要功能是输出,和Print类似的函数有以下几个:

  • func Print(a ...interface{}) (n int, err error):直接输出
  • func Println(a ...interface{}) (n int, err error):和Print使用方法一样,但是不同与Print的是Println在每次打印完成之后会自动换行,如果使用Print想要换行需要在结尾加上\n
  • func Printf(format string, a ...interface{}) (n int, err error):支持格式化输出字符串,在使用Printf时,可以在函数中使用格式化字符串占位。

代码示例:

func main() {
	a := "Lee"
	fmt.Print("大家好,")
	fmt.Printf("我是:%s \n",a)
	fmt.Println("我在学习Go语言")
}

运行结果:

常用占位符:

  • %d:整形十进制占位符
  • %b:整形二进制占位符
  • %o:整形八进制占位符
  • %x:整形十六进制占位符,其中a到f为小写
  • %X:整形十六进制占位符,其中A到F为大写
  • %s:字符串占位符
  • %f:浮点数占位符
  • %e:浮点数科学计数法:例如:1.234e+10
  • %E:浮点数科学计数法:例如:1.234E+10
  • %t:布尔类型占位符
  • %p:指针,十六进制表示,并加上0x前缀

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)

代码示例:

func main() {
	file, err := os.OpenFile("D://test/a.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		fmt.Println("打开文件出错:", err)
		return
	}
	name := "lee"
	age := 23
	// 向文件中写入数据
	fmt.Fprintf(file, "姓名:%s,年龄:%d \n", name, age)
	// 向控制台写入数据
	fmt.Fprintf(os.Stdout, "写入成功")
}

运行结果:

以上代码成功将内容写入到了a.txt文件中。

Sprint

Sprint会将传入的内容格式化成一个字符串并返回,和Sprint类似的函数有以下几个:

  • func Sprint(a ...interface{}) string:直接返回
  • func Sprintf(format string, a ...interface{}) string:格式化返回
  • func Sprintln(a ...interface{}) string:自动换行放回

代码示例:

func main() {
	a := "Lee"
	s1 := fmt.Sprint("直接返回")
	s2 := fmt.Sprintln("自动换行返回")
	s3 := fmt.Sprintf("格式化返回:%s", a)
	fmt.Print(s1)
	fmt.Print(s2)
	fmt.Print(s3)
}

运行结果:

Errorf

Errorf是根据传入的内容格式化后返回一个包含该字符串的error。

func Errorf(format string, a ...interface{}) error 

代码示例:

func main() {
	a := "error"
	error := fmt.Errorf("错误:%s", a)
	fmt.Print(error)
}

运行结果:

输入

在go语言中获取控制台输入可以使用以下几个函数:

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) 

Scan

Scan从标准输入读取文本,以空格符或换行符为分隔,将读取到的内容赋值给函数的参数,函数返回成功读取到的数据个数和遇到的错误。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scan(&name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

Scanf

Scanf根据format参数指定的格式去读取由空白符分隔的值保存到函数的参数中。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scanf("name=%s age=%d", &name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

使用Scanf进行输入时,需要完整的在控制台输入函数中指定的格式,例如上述代码中指定的格式为name=%s age=%d,则在输入时就必须使用该格式,如果还是和之前的Scan中一样只输入lee 23是读取不到内容的。

Scanln

Scanln类似于Scan,但是不同的是使用Scanln时只要输入了换行之后就会停止读取。

代码示例:

func main() {
	var name string
	var age int
	fmt.Print("请输入姓名和年龄:")
	fmt.Scanln(&name, &age)
	fmt.Printf("姓名:%s,年龄:%d \n", name, age)
}

运行结果:

例如上述的输入中,如果仅仅只是输入了姓名就换行,那么就会停止读取,但是在Scan中,如果输入姓名后换行不会停止读取还需要继续输入年龄后才会停止读取。

总结

到此这篇关于Go语言标准输入输出库基本使用的文章就介绍到这了,更多相关Go语言标准输入输出库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文带你深入理解Golang中的泛型

    一文带你深入理解Golang中的泛型

    Go 在泛型方面一直被诟病,因为它在这方面相对比较落后。但是,在 Go 1.18 版本中,泛型已经被正式引入,成为了 Go 语言中一个重要的特性。本文将会详细介绍 Go 泛型的相关概念,语法和用法,希望能够帮助大家更好地理解和应用这一特性
    2023-05-05
  • 浅析Go中fasthttp与net/http的性能对比及应用

    浅析Go中fasthttp与net/http的性能对比及应用

    这篇文章主要为大家详细介绍了Golang中fasthttp的底层实现以及与net/http的区别,下面就跟随小编一起来看看fasthttp到底是如何做到性能如此之快的吧
    2024-03-03
  • 一文详解Go语言io.LimitedReader类型

    一文详解Go语言io.LimitedReader类型

    这篇文章主要为大家介绍了Go语言io.LimitedReader类型示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • golang常用库之pkg/errors包第三方错误处理包案例详解

    golang常用库之pkg/errors包第三方错误处理包案例详解

    这篇文章主要介绍了golang常用库之pkg/errors包第三方错误处理包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入了解Golang 哈希算法之MD5、SHA-1和SHA-256

    深入了解Golang 哈希算法之MD5、SHA-1和SHA-256

    哈希算法是计算机科学领域中一种重要的技术,它将任意长度的输入数据映射为固定长度的哈希值,在本篇文章中,我们将深入探讨Golang中的哈希算法,从多个方面介绍其详细内容,希望通过本文的阅读你将对 Golang哈希算法有更全面的理解
    2023-05-05
  • Golang内存管理之内存逃逸分析

    Golang内存管理之内存逃逸分析

    逃逸分析是指由编译器决定内存分配的位置,不需要程序员指定,这篇文章主要为大家详细介绍了Golang中内存逃逸分析的几种方法,需要的可以参考一下
    2023-07-07
  • golang 熔断限流降级实践

    golang 熔断限流降级实践

    本文主要介绍了golang 熔断限流降级实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Go语言中的sync包同步原语最新详解

    Go语言中的sync包同步原语最新详解

    Go语言在sync包中提供了一套多才多艺的同步机制,以及用于管理对共享资源的并发访问的原子操作,了解这些工具并为您的并发需求选择合适的工具是编写高效可靠的并发Go程序的关键,这篇文章主要介绍了Go语言中的`sync`包同步原语,需要的朋友可以参考下
    2023-12-12
  • 自定义Go Json的序列化方法译文

    自定义Go Json的序列化方法译文

    这篇文章主要为大家介绍了自定义Go Json序列化方法译文,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go 文件读取和写入操作全面讲解

    Go 文件读取和写入操作全面讲解

    这篇文章主要为大家介绍了Go文件的读取和写入操作示例的全面详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论