Golang的fmt包

Sprint & Sprintf
Sprint 使用其操作数的默认格式格式化并返回结果字符串。
当两者都不是字符串时,在操作数之间添加空格。

// Sprint formats using the default formats for its operands and returns the resulting string.
// Spaces are added between operands when neither is a string.
func Sprint(a ...any) string {
	p := newPrinter()
	p.doPrint(a)
	s := string(p.buf)
	p.free()
	return s
}

Sprintf 根据格式说明符格式化并返回结果字符串。

// Sprintf formats according to a format specifier and returns the resulting string.
func Sprintf(format string, a ...any) string {
	p := newPrinter()
	p.doPrintf(format, a)
	s := string(p.buf)
	p.free()
	return s
}

fmt包

fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。

输出内容

Print
Print 系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容

Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。

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)

举例

package main

import "fmt"

func main() {
	fmt.Print("打印信息,不做任何操作。。。")
	str := "格式化"
	fmt.Printf("%s\n", str)
	fmt.Println("打印信息,末尾换行")
}

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() {
	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 := "EDG/RNG/JDG/TES/GENG/T1/DK/DRX..."
	// 向打开的文件句柄中写入内容
	fmt.Fprintf(fileObj, "往文件中写如信息:%s", name)
}

只要满足io.Writer接口的类型都支持写入。

Sprint
Sprint 系列函数会把传入的数据生成并返回一个字符串。

func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string

例子

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

Errorf
Errorf函数根据format参数生成格式化字符串并返回一个包含该字符串的错误。

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

通常使用这种方式来自定义错误类型,例如:

err := fmt.Errorf("这是一个错误")

Go1.13版本为fmt.Errorf函数新加了一个%w占位符用来生成一个可以包裹Error的Wrapping Error。

e := errors.New("原始错误e")
w := fmt.Errorf("Wrap了一个错误%w", e)
posted @ 2022-09-28 21:17  Leejk  阅读(69)  评论(0编辑  收藏  举报