📅  最后修改于: 2023-12-03 15:01:01.577000             🧑  作者: Mango
GoLang 中的 fmt 包是一个用于格式化 I/O 操作的标准库。它提供了一系列的格式化输出函数和格式化输入函数。
使用 fmt 包可以输出文本、数字、变量等各种类型的数据,并且可以根据需求自定义输出格式。同时,fmt 包还可以读取标准输入和标准错误,并提供了一组格式化输入函数,可以从标准输入读取不同类型的数据。
Print
/ Println
:输出文本信息,可以使用占位符 %s
,格式化输出变量值。示例代码如下:package main
import "fmt"
func main() {
name := "World"
fmt.Printf("Hello, %s!\n", name)
}
Printf
:格式化输出,支持占位符 %d
、%f
、%t
、%v
等常用占位符。示例代码如下:package main
import "fmt"
func main() {
name := "World"
age := 18
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
}
Sprintf
:格式化输出,根据格式返回格式化后的字符串。示例代码如下:package main
import "fmt"
func main() {
name := "World"
age := 18
s := fmt.Sprintf("Hello, %s! You are %d years old.\n", name, age)
fmt.Println(s)
}
Scanf
:格式化输入,从标准输入读取数据,并使用对应的占位符格式化数据。示例代码如下:package main
import "fmt"
func main() {
var name string
var age int
fmt.Println("What's your name?")
fmt.Scanf("%s", &name)
fmt.Println("How old are you?")
fmt.Scanf("%d", &age)
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
}
Fprintf
:格式化输出到指定的 io.Writer(如文件、网络连接)。示例代码如下:package main
import (
"fmt"
"os"
)
func main() {
name := "World"
age := 18
f, _ := os.Create("hello.txt")
defer f.Close()
fmt.Fprintf(f, "Hello, %s! You are %d years old.\n", name, age)
}
Errorf
:格式化输出错误信息,并返回一个 error 类型值。示例代码如下:package main
import (
"errors"
"fmt"
)
func main() {
name := "World"
if name != "Alice" {
err := fmt.Errorf("Name %s is not allowed.", name)
fmt.Println(err)
return
}
fmt.Println("Hello, Alice!")
}
GoLang 有一个内置的单元测试框架,可以帮助我们编写单元测试。下面是一个使用 fmt 包的单元测试示例代码:
package main
import (
"fmt"
"testing"
)
func TestFprintf(t *testing.T) {
name := "World"
age := 18
f := &fakeWriter{}
fmt.Fprintf(f, "Hello, %s! You are %d years old.\n", name, age)
if f.str != "Hello, World! You are 18 years old.\n" {
t.Errorf("Incorrect output: %s", f.str)
}
}
type fakeWriter struct {
str string
}
func (f *fakeWriter) Write(p []byte) (int, error) {
f.str = string(p)
return len(p), nil
}
在上面的示例代码中,我们编写了一个测试函数 TestFprintf
,用于测试格式化输出到 fakeWriter 的情况,并使用自己编写的 fakeWriter 实现 io.Writer 接口,即可测试输出结果是否正确。
以上就是 GoLang 中的 fmt 包介绍,其中包括常见的使用方法和单元测试示例。GoLang 以其简洁、高效、易用的特点,越来越受到程序员的青睐,希望大家能够更好地运用 GoLang 来开发高性能程序。