包 fmt 实现格式化的 I/O,其功能类似于 C 的 printf 和 scanf。
目录
func Errorf(format string, a ...any) error
func Fprint(w io.Writer, a ...any) (n int, err error)
func Fprintf(w io.Writer, format string, a ...any) (n int, err error)
func Fprintln(w io.Writer, a ...any) (n int, err error)
func Fscan(r io.Reader, a ...any) (n int, err error)
func Fscanf(r io.Reader, format string, a ...any) (n int, err error)
func Fscanln(r io.Reader, a ...any) (n int, err error)
func Print(a ...any) (n int, err error)
func Printf(format string, a ...any) (n int, err error)
func Println(a ...any) (n int, err error)
func Scan(a ...any) (n int, err error)
func Scanf(format string, a ...any) (n int, err error)
func Scanln(a ...any) (n int, err error)
func Sprintf(format string, a ...any) string
func Sprintln(a ...any) string
func Sscan(str string, a ...any) (n int, err error)
func Sscanf(str string, format string, a ...any) (n int, err error)
func Sscanln(str string, a ...any) (n int, err error)
func Errorf(format string, a ...any) error
Errorf 函数允许我们使用格式设置功能来创建描述性错误消息
package main
import (
"fmt"
)
func main() {
const name, id = "Tim", 17
err := fmt.Errorf("user %q (id %d) not found", name, id)
fmt.Println(err.Error())
}
终端输出:
user "Tim" (id 17) not found
func Fprint(w io.Writer, a ...any) (n int, err error)
Fprint 格式使用其操作数的默认格式并写入 w。当两者都不是字符串时,会在操作数之间添加空格。它返回写入的字节数和遇到的任何写入错误
package main
import (
"fmt"
"os"
)
func main() {
const name, age = "小王", 22
n, err := fmt.Fprint(os.Stdout, name, "年龄是", age, "岁\n")
// Fprint的n和err返回值是
// 构成io返回的值
if err != nil {
fmt.Fprintf(os.Stderr, "Fprint: %v\n", err)
}
fmt.Print(n, " bytes written.\n")
}
终端输出:
小王年龄是22岁
21 bytes written.
func Fprintf(w io.Writer, format string, a ...any) (n int, err error)
Fprintf 根据格式说明符进行格式设置格式,并写入 w。它返回写入的字节数和遇到的任何写入错误
package main
import (
"fmt"
"os"
)
func main() {
const name, age = "小王", 22
n, err := fmt.Fprintf(os.Stdout, "%s 的年龄是 %d 岁。\n", name, age)
// Fprintf的n和err返回值是
// 构成io返回的值
if err != nil {
fmt.Fprintf(os.Stderr, "Fprintf: %v\n", err)
}
fmt.Printf("%d bytes written.\n", n)
}
终端输出:
小王 的年龄是 22 岁。
30 bytes written.
func Fprintln(w io.Writer, a ...any) (n int, err error)
Fprintln 使用其操作数的默认格式进行格式化,并写入 w。始终在操作数之间添加空格,并附加换行符。它返回写入的字节数和遇到的任何写入错误。
package main
import (
"fmt"
"os"
)
func main() {
const name, age = "小王", 22
n, err := fmt.Fprintln(os.Stdout, name, "的年龄是", age, "岁")
// Fprintln的n和err返回值是
// 构成io返回的值
if err != nil {
fmt.Fprintf(os.Stderr, "Fprintln: %v\n", err)
}
fmt.Println(n, "bytes written.")
}
终端输出:
小王 的年龄是 22 岁
27 bytes written.
func Fscan(r io.Reader, a ...any) (n int, err error)
Fscan 扫描从 r 读取的文本,将连续的空格分隔值存储到连续的参数中。换行符计为空格。它返回成功扫描的项目数。如果这少于参数数,则错误将报告原因。
package main
import (
"fmt"
"os"
"strings"
)
func main() {
var a, b, c string
r := strings.NewReader("5 true gophers")
n, err := fmt.Fscan(r, &a, &b, &c)
if err != nil {