go语言的成神之路-标准库篇-fmt标准库

[复制链接]
发表于 2025-12-9 20:01:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

目次
一、三种范例的输出
print:
println:
printf:
总结:
代码展示:
二、格式化占位符
%s:用于格式化字符串。
%d:用于格式化整数。
%f:用于格式化浮点数。
%v:用于格式化任何值,返回其默认格式。
%T:用于输出变量的范例。
进制及其字符?
宽度标识符?
代码展示:?
三、Fprint
输出到标准输出
写入文件中
输出到欣赏器
代码展示:
四、Sprint
根本用法:
?多个参数格式化:
格式化复杂数据范例:
五、四种范例的输入
fmt.Scan():
fmt.Scanf():
fmt.Scanln():
bufio.Reader:

一、三种范例的输出

在 Go 语言中,print、printf和println是用于输出内容到控制台的函数,但是它们的用法和功能有所差别:
print:



  • print是一个内置函数,用于输出没有格式的字符串。它不添加换行符,也不支持格式化。
println:



  • println也是一个内置函数,雷同于print,但它会在输出后自动添加一个换行符。
printf:



  • printf是fmt包中的一个函数,支持格式化输出。可以利用格式化动词插入变量或指定输特别式。
    1. package main
    2. import "fmt"
    3. func main() {
    4.         // Print()函数用于打印字符串到标准输出,不带换行符
    5.     fmt.Print("Hello, ")
    6.     fmt.Print("World!")
    7.         // printf()函数用于格式化输出字符串
    8.         fmt.Printf("Hello, %s!
    9. ", "World")
    10.         // Println()函数用于打印字符串到标准输出,带换行符
    11.     fmt.Println("Hello, World!")
    12.         fmt.Println("Hello,", "World!")
    13. }
    复制代码

总结:



  • 利用print和println举行简朴输出。
  • 利用fmt.Printf举行格式化输出。
代码展示:

  1. package main
  2. import "fmt"
  3. func main() {
  4.         // Print()函数用于打印字符串到标准输出,不带换行符
  5.     fmt.Print("Hello, ")
  6.     fmt.Print("World!")
  7.         // printf()函数用于格式化输出字符串
  8.         fmt.Printf("Hello, %s!
  9. ", "World")
  10.         // Println()函数用于打印字符串到标准输出,带换行符
  11.     fmt.Println("Hello, World!")
  12.         fmt.Println("Hello,", "World!")
  13. }
复制代码
二、格式化占位符

在 Go 语言中,fmt.Printf函数利用格式化占位符来格式化输出。以下是一些常见的格式化占位符及其用法:
%s:用于格式化字符串。


%d:用于格式化整数。


%f:用于格式化浮点数。


%v:用于格式化任何值,返回其默认格式。


%T:用于输出变量的范例。


进制及其字符


宽度标识符


代码展示:

  1. package main
  2. import (
  3.         "fmt"
  4.         )
  5. func main() {
  6.         name := "小明"
  7.         fmt.Printf("Hello, %s!
  8. ", name) // 输出 Hello, 小明!
  9.         age:=18
  10.         fmt.Printf("小明今年%d岁了
  11. ",age) // 输出 小明今年18岁了
  12.         price:=100.5
  13.         fmt.Printf("价格是%.2f元
  14. ",price) // 输出 价格是100.50元
  15.         //%v
  16.         fmt.Printf("name=%v,age=%v,price=%v
  17. ",name,age,price) // 输出 naem=小明, age=18,price=100.5
  18.         data := []int{1, 2, 3}
  19.         fmt.Printf("Data: %v
  20. ", data) // 输出: Data: [1 2 3]
  21.         fmt.Printf("Type of age: %T
  22. ", age) // 输出: Type of age: int
  23.         fmt.Printf("Type of price: %T
  24. ", price) // 输出: Type of price: float64
  25.         fmt.Printf("Type of data: %T
  26. ", data) // 输出: Type of data: []int
  27.         //%t
  28.         fmt.Printf("Is age true? %t
  29. ", age == 18) // 输出: Is age true? true
  30.         fmt.Printf("Is price true? %t
  31. ", price == 100.5) // 输出: Is price true? true
  32.         fmt.Printf("Is data true? %t
  33. ", data == nil) // 输出: Is data true? false
  34.         //%b
  35.         num := 10
  36.         fmt.Printf("二进制表示: %d is %b
  37. ", num, num) // 输出: 二进制表示: 10 is 1010
  38.         //%c
  39.         fmt.Printf("字符表示: %d is %c
  40. ", 65, 65) // 输出: 字符表示: 65 is A
  41.         //%d
  42.         fmt.Printf("十进制表示: %d is %d
  43. ", num, num) // 输出: 十进制表示: 10 is 10
  44.         //%o
  45.         fmt.Printf("八进制表示: %d is %o
  46. ", num, num) // 输出: 八进制表示: 10 is 12
  47.         //%x
  48.         fmt.Printf("十六进制表示: %d is %x
  49. ", num, num) // 输出: 十六进制表示: 10 is a
  50. }
复制代码
三、Fprint

在 Go 语言中,Fprint函数属于fmt包,用于将格式化的输出写入到指定的io.Writer接口,而不是直接输出到标准输出。常见的用途包罗将输出写入文件、网络毗连等。Fprint与Print和Println雷同,但它答应你指定输出的目标地。
输出到标准输出


写入文件中



写入文件的时间可以参考下表,具体的摆列出了每一个数字代表的寄义。

输出到欣赏器


欣赏器结果如下:

代码展示:

  1. package main
  2. import (
  3.         "fmt"
  4.         "os"
  5.         "net/http"
  6. )
  7. func main() {
  8.         // 输出到标准输出
  9.         fmt.Fprint(os.Stdout, "Hello, world!")
  10.         // 写入文件中
  11.         f, err := os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
  12.         if err!= nil {
  13.                 fmt.Println(err)
  14.                 return
  15.         }
  16.         defer f.Close()
  17.         fmt.Fprint(f, "Hello, world!")
  18. // 启动一个 HTTP 服务器,监听 8080 端口,并使用自定义的处理器 MyHandler
  19.         http.ListenAndServe(":8080", &MyHandler{})
  20. }
  21. // 定义一个 MyHandler 结构体,用于处理 HTTP 请求
  22. type MyHandler struct {
  23. }
  24. // 实现 http.Handler 接口的 ServeHTTP 方法
  25. // 当有 HTTP 请求到达时,该方法将被调用
  26. func (*MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  27.     // 使用 fmt.Fprint 将 "Hello, world!" 写入到浏览器的响应体中
  28.     fmt.Fprint(w, "Hello, world!")
  29. }
复制代码
四、Sprint

在 Go 语言中,Sprint函数属于fmt包,用于将多个值格式化为字符串,而不是直接输出到控制台。与Print或Println差别,Sprint会返回一个字符串,可以将其用于其他操纵,比方赋值给变量或用于进一步处理处罚。
根本用法:

  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     // 使用 Sprint 将字符串和数字组合生成一个字符串
  7.     result := fmt.Sprint("Hello, ", "World!", 123)
  8.     fmt.Println(result) // 输出: Hello, World!123
  9. }
复制代码
多个参数格式化:

  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     name := "Alice"
  7.     age := 30
  8.     // 使用 Sprint 组合多个变量为字符串
  9.     output := fmt.Sprintf("Name: %s, Age: %d", name, age)
  10.     fmt.Println(output) // 输出: Name: Alice, Age: 30
  11. }
复制代码
格式化复杂数据范例:

  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     data := []int{1, 2, 3}
  7.     // 格式化切片成字符串
  8.     str := fmt.Sprint(data)
  9.     fmt.Println("Data:", str) // 输出: Data: [1 2 3]
  10. }
复制代码


  • Sprint用于将格式化的值转化为字符串并返回。
  • Sprintf是更为常用的函数,答应利用格式占位符来举行复杂的格式化。
  • Sprint和Sprintf都不会直接输出到控制台,而是天生字符串,可以用于赋值或进一步的处理处罚。
五、四种范例的输入

在 Go 语言中,输入通常指的是从用户或其他泉源读取数据的过程。紧张利用fmt包中的函数和os包中的函数来处理处罚输入。
fmt.Scan():

用于从标准输入读取数据,得当读取单个值。
  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     var name string
  7.     fmt.Print("请输入你的名字: ")
  8.     fmt.Scan(&name) // 将输入的名字存储到变量 name 中
  9.     fmt.Println("你好,", name)
  10. }
复制代码
fmt.Scanf():

用于格式化读取输入,雷同于printf的格式化输出。
  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     var name string
  7.     var age int
  8.     fmt.Print("请输入你的名字和年龄(格式:名字 年龄): ")
  9.     fmt.Scanf("%s %d", &name, &age) // 读取一个字符串和一个整数
  10.     fmt.Printf("你好, %s,你的年龄是 %d!
  11. ", name, age)
  12. }
复制代码
fmt.Scanln():

雷同于Scan(),但会读取一整行直到换行符。
  1. package main
  2. import (
  3.     "fmt"
  4. )
  5. func main() {
  6.     var input string
  7.     fmt.Print("请输入一行内容: ")
  8.     fmt.Scanln(&input) // 读取整行输入
  9.     fmt.Println("你输入的是:", input)
  10. }
复制代码
bufio.Reader:

对于更复杂的输入,通常利用bufio.Reader来读取。
它可以输入带空格的字符串
  1. package main
  2. import (
  3.     "bufio"
  4.     "fmt"
  5.     "os"
  6. )
  7. func main() {
  8.     reader := bufio.NewReader(os.Stdin)
  9.     fmt.Print("请输入一行内容: ")
  10.     input, _ := reader.ReadString('
  11. ') // 读取一行输入
  12.     fmt.Println("你输入的是:", input)
  13. }
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表