写点什么

Go 语言—基本输入输出包的使用

作者:良猿
  • 2022-11-16
    湖北
  • 本文字数:1896 字

    阅读完需:约 6 分钟

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 中,如果输入姓名后换行不会停止读取还需要继续输入年龄后才会停止读取。


发布于: 刚刚阅读数: 3
用户头像

良猿

关注

还未添加个人签名 2019-02-13 加入

还未添加个人简介

评论

发布
暂无评论
Go语言—基本输入输出包的使用_Go_良猿_InfoQ写作社区