golang fmt格式化输出

发布时间:2024-07-05 00:46:32

在golang中,fmt包是一个非常常用的包,它提供了一系列方法来格式化输入和输出。无论是打印简单的消息还是格式化复杂的结构体,fmt包都可以帮助我们轻松地完成任务。本文将介绍一些fmt包的常用功能和用法。

格式化输出

在golang中,我们可以使用fmt包来格式化输出。使用fmt包的Print和Println函数可以打印简单的消息,而Printf函数可以根据指定的格式打印更复杂的消息。

Print函数用于打印简单的消息,它会将多个参数打印到标准输出上,并且会在每个参数之间添加一个空格:

```go package main import "fmt" func main() { fmt.Print("Hello", "World") // Output: Hello World } ```

Println函数与Print函数类似,不同的是它会在打印完所有参数后添加一个换行符:

```go package main import "fmt" func main() { fmt.Println("Hello", "World") // Output: Hello World } ```

Printf函数用于按照指定的格式打印消息。格式化字符串中使用%加上一定的字符来表示要填充的内容。下面是一些常用的格式化字符:

- `%d`, `%b`, `%o`, `%x`: 分别用于打印十进制、二进制、八进制和十六进制格式的整数。 - `%f`, `%e`, `%g`: 分别用于打印浮点数的小数、指数和紧凑格式。 - `%s`: 用于打印字符串。 - `%t`: 用于打印布尔值。 - `%v`: 用于打印变量的默认格式。

除了格式化字符外,还可以通过在格式化字符串中使用%加上参数顺序来指定要填充的内容:

```go package main import "fmt" func main() { fmt.Printf("Number: %d, String: %s\n", 10, "Hello") // Output: Number: 10, String: Hello } ```

格式化输入

除了格式化输出外,fmt包还提供了一些方法用于格式化输入。可以使用Scan、Scanf和Scanln函数从标准输入中读取用户的输入。

Scan函数用于读取用户的输入,并将输入存储到指定的变量中:

```go package main import "fmt" func main() { var name string fmt.Scan(&name) fmt.Printf("Hello, %s!", name) } ```

Scanf函数与Print函数类似,不同的是它会根据指定的格式化字符串从标准输入中读取用户的输入。

```go package main import "fmt" func main() { var name string fmt.Scanf("Hello, %s!", &name) fmt.Printf("%s", name) // Output: World } ```

Scanln函数与Scanf函数类似,不同的是它会在读取完用户输入后添加一个换行符。

```go package main import "fmt" func main() { var name string fmt.Scanln(&name) fmt.Printf("Hello, %s!", name) // Output: Hello, World! } ```

格式化结构体

在golang中,可以使用fmt包来格式化输出和输入结构体。如果结构体定义了String方法,那么在打印结构体时会调用该方法来格式化输出。

```go package main import "fmt" type Person struct { Name string Age int } func (p Person) String() string { return fmt.Sprintf("Name: %s, Age: %d", p.Name, p.Age) } func main() { p := Person{ Name: "Alice", Age: 20, } fmt.Printf("%s", p) // Output: Name: Alice, Age: 20 } ```

如果需要从用户的输入中读取结构体,可以使用Scan、Scanf和Scanln函数,并将指定的结构体作为参数传递给函数。

```go package main import "fmt" type Person struct { Name string Age int } func main() { var p Person fmt.Scanf("Name: %s, Age: %d", &p.Name, &p.Age) fmt.Printf("%v", p) } ```

以上就是fmt包的一些常用功能和用法。通过fmt包,我们可以方便地格式化输入和输出。无论是打印简单的消息还是格式化复杂的结构体,fmt包都能帮助我们轻松地完成任务。希望本文对你有所帮助。

相关推荐