在 Go 语言中,fmt包提供了很多格式化输入输出的函数。以下是一些主要函数的示例:
Print系列函数:
- Print:打印输出,不换行。
- Println:打印输出,换行。
- Printf:格式化打印输出。
package main
import "fmt"
func main() {
fmt.Print("Hello") // Hello
fmt.Println(" World!") // World! 和上面输出在一行
fmt.Printf("Today is %s\n", "Wednesday") // Today is Wednesday
}
Sprint系列函数:
- Sprint:返回格式化后的字符串,不换行。
- Sprintln:返回格式化后的字符串,换行。
- Sprintf:格式化并返回字符串。
package main
import "fmt"
func main() {
str := fmt.Sprint("Hello")
strWithNewLine := fmt.Sprintln(" World!")
formattedStr := fmt.Sprintf("Today is %s", "Wednesday")
fmt.Println(str) // Hello
fmt.Println(strWithNewLine) // World!
fmt.Println(formattedStr) // Today is Wednesday
}
- Fprint系列函数:将内容输出到指定的io.Writer。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("output.txt")
if err != nil {
fmt.Println(err)
return
}
defer func(file *os.File) {
_ = file.Close()
}(file)
_, _ = fmt.Fprint(file, "Hello")
_, _ = fmt.Fprintln(file, " World!")
_, _ = fmt.Fprintf(file, "Today is %s", "Wednesday")
// 向标准输出写入
_, _ = fmt.Fprint(os.Stdout, "Writing to stdout")
}
- Errorf:返回一个包含错误信息的error类型。
package main
import "fmt"
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
}
- Scan系列函数:从标准输入读取数据。
package main
import "fmt"
func main() {
var name string
var age int
fmt.Print("Enter your name and age: \n")
_, _ = fmt.Scan(&name, &age)
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
}
- Sscan系列函数:从字符串中读取数据。
package main
import "fmt"
func main() {
str := "Alice 25"
var name string
var age int
_, _ = fmt.Sscan(str, &name, &age)
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
// Hello, Alice! You are 25 years old.
}
- Fscan系列函数:从io.Reader中读取数据。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.Open("input.txt")
if err != nil {
fmt.Println(err)
return
}
defer func(file *os.File) {
_ = file.Close()
}(file)
reader := bufio.NewReader(file)
var name string
var age int
_, _ = fmt.Fscan(reader, &name, &age)
fmt.Printf("Hello, %s! You are %d years old.\n", name, age)
}
评论 (0)