Golang fmt.print 格式化输出

Golang fmt.print 格式化输出

Posted by 锐玩道 on May 11, 2021

如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客

Golang fmt 标准包 功能类似于C语言printf 实现了格式化I/O获取、输出。 源自C语言的实现但Golang的使用起来更简单,功能主要分为 输出内容获取输入 两大部分。

获取输入 已经在 Golang fmt.Scan 获取输入 详细讲述过,这里就不再纠结。接下来具体列举 fmt 向外输出

Golang fmt 标准包提供了几种输出方式如下:

Print

Print() 相关函数会标准化将内容输出到系统,区别在于:

  • Print() 直接输出内容,语法如下:

    func Print(a …interface{}) (n int, err error)

  • Printf() 支持输出格式化字符串,语法如下:

    func Printf(format string, a …interface{}) (n int, err error)

  • Println() 在输出内容的结束后换行,语法如下:

    func Println(a …interface{}) (n int, err error)

具体例子:

package main

import (
	"fmt"
)

func main() {
    fmt.Print("在命令行打印该信息。")
    name := "Go语言"
    fmt.Printf("我是:%s\n", name)
    fmt.Println("在命令行打印单独一行显示")
}

/**
执行代码输出:
    在命令行打印该信息。我是:Go语言
    在命令行打印单独一行显示
*/

Fprint

Fprint() 相关函数会把内容输出到 io.Writer接口类型 的变量中,常用于打印日志到文件中

区别在于:

  • Fprint() 直接输出内容输出到变量中,语法如下:

    func Fprint(w io.Writer, a …interface{}) (n int, err error)

  • Fprintf() 根据规格格式化内容输出到变量中,语法如下:

    func Fprintf(w io.Writer, format string, a …interface{}) (n int, err error)

  • Fprintln() 输出内容的末尾添加换行符输出到变量中,语法如下:

    func Fprintln(w io.Writer, a …interface{}) (n int, err error)

具体例子:

package main

import (
	"fmt"
)

func main() {
    fmt.Fprintln(os.Stdout, "标准输出内容到文件")
    fileObj, err := os.OpenFile("./xx.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println("打开文件出错,err:", err)
        return
    }

    name := "Go语言"
    // 向文件句柄中写入内容, 注意,只有满足io.Writer接口的类型才支持写入。
    fmt.Fprintf(fileObj, "往文件写入信息:%s", name)
}

/**
执行代码输出内容到文件 xx.txt:
    往文件写入信息:Go语言
*/

Sprint

Sprint() 相关函数会把传入的数据生成并返回一个字符串,常用语格式化字符串,如:大段文字中替换对应变量。

区别在于:

  • Sprint() 直接返回内容,语法如下:

    func Sprint(a …interface{}) string

  • Sprintf() 根据格式格式化内容并返回,语法如下:

    func Sprintf(format string, a …interface{}) string

  • Sprintln() 根据格式格式化内容结尾添加换行符,语法如下:

    func Sprintln(a …interface{}) string

具体例子:

package main

import (
	"fmt"
)

func main() {
    s1 := fmt.Sprint("Go语言")
    name := "Go语言"
    age := 18
    s2 := fmt.Sprintf("name:%s,age:%d", name, age)
    s3 := fmt.Sprintln("Go语言")
    fmt.Println(s1, s2, s3)
}

/** 
执行代码输出内容
    Go语言 name:Go语言,age:18 Go语言
*/