当前位置: 首页 > article >正文

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

目录

一、三种类型的输出

print:

println:

printf:

总结:

代码展示:

二、格式化占位符

%s:用于格式化字符串。

%d:用于格式化整数。

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

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

%T:用于输出变量的类型。

进制及其字符?

宽度标识符?

代码展示:?

三、Fprint

输出到标准输出

写入文件中

输出到浏览器

代码展示:

四、Sprint

基本用法:

?多个参数格式化:

格式化复杂数据类型:

五、四种类型的输入

fmt.Scan():

fmt.Scanf():

fmt.Scanln():

bufio.Reader:


一、三种类型的输出

在 Go 语言中,printprintfprintln是用于输出内容到控制台的函数,但是它们的用法和功能有所不同:

print

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

println

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

printf

  • printffmt包中的一个函数,支持格式化输出。可以使用格式化动词插入变量或指定输出格式。

    package main
    
    import "fmt"
    
    func main() {
    
    	// Print()函数用于打印字符串到标准输出,不带换行符
        fmt.Print("Hello, ")
        fmt.Print("World!")
    	// printf()函数用于格式化输出字符串
    	fmt.Printf("Hello, %s!
    ", "World")
    	// Println()函数用于打印字符串到标准输出,带换行符
        fmt.Println("Hello, World!")
    	fmt.Println("Hello,", "World!")
    }
    

总结:

  • 使用printprintln进行简单输出。
  • 使用fmt.Printf进行格式化输出。

代码展示:

package main

import "fmt"

func main() {

	// Print()函数用于打印字符串到标准输出,不带换行符
    fmt.Print("Hello, ")
    fmt.Print("World!")
	// printf()函数用于格式化输出字符串
	fmt.Printf("Hello, %s!
", "World")
	// Println()函数用于打印字符串到标准输出,带换行符
    fmt.Println("Hello, World!")
	fmt.Println("Hello,", "World!")
}

二、格式化占位符

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

%s:用于格式化字符串。

%d:用于格式化整数。

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

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

%T:用于输出变量的类型。

进制及其字符

宽度标识符

代码展示:

package main
import (
	"fmt"
	)
func main() {
	name := "小明"
	fmt.Printf("Hello, %s!
", name) // 输出 Hello, 小明!

	age:=18
	fmt.Printf("小明今年%d岁了
",age) // 输出 小明今年18岁了

	price:=100.5
	fmt.Printf("价格是%.2f元
",price) // 输出 价格是100.50元

	//%v
	fmt.Printf("name=%v,age=%v,price=%v
",name,age,price) // 输出 naem=小明, age=18,price=100.5
	data := []int{1, 2, 3}
	fmt.Printf("Data: %v
", data) // 输出: Data: [1 2 3]

	fmt.Printf("Type of age: %T
", age) // 输出: Type of age: int
	fmt.Printf("Type of price: %T
", price) // 输出: Type of price: float64
	fmt.Printf("Type of data: %T
", data) // 输出: Type of data: []int

	//%t
	fmt.Printf("Is age true? %t
", age == 18) // 输出: Is age true? true
	fmt.Printf("Is price true? %t
", price == 100.5) // 输出: Is price true? true
	fmt.Printf("Is data true? %t
", data == nil) // 输出: Is data true? false

	//%b
	num := 10
	fmt.Printf("二进制表示: %d is %b
", num, num) // 输出: 二进制表示: 10 is 1010
	//%c
	fmt.Printf("字符表示: %d is %c
", 65, 65) // 输出: 字符表示: 65 is A
	//%d
	fmt.Printf("十进制表示: %d is %d
", num, num) // 输出: 十进制表示: 10 is 10
	//%o
	fmt.Printf("八进制表示: %d is %o
", num, num) // 输出: 八进制表示: 10 is 12
	//%x
	fmt.Printf("十六进制表示: %d is %x
", num, num) // 输出: 十六进制表示: 10 is a
}

三、Fprint

在 Go 语言中,Fprint函数属于fmt包,用于将格式化的输出写入到指定的io.Writer接口,而不是直接输出到标准输出。常见的用途包括将输出写入文件、网络连接等。FprintPrintPrintln类似,但它允许你指定输出的目的地。

输出到标准输出

写入文件中

写入文件的时候可以参考下表,详细的罗列出了每一个数字代表的含义。

输出到浏览器

浏览器效果如下:

代码展示:

package main
import (
	"fmt"
	"os"
	"net/http"
)
func main() {
	// 输出到标准输出
	fmt.Fprint(os.Stdout, "Hello, world!")

	// 写入文件中
	f, err := os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
	if err!= nil {
		fmt.Println(err)
		return
	}
	defer f.Close()
	fmt.Fprint(f, "Hello, world!")

// 启动一个 HTTP 服务器,监听 8080 端口,并使用自定义的处理器 MyHandler
	http.ListenAndServe(":8080", &MyHandler{})
}
// 定义一个 MyHandler 结构体,用于处理 HTTP 请求
type MyHandler struct {
}

// 实现 http.Handler 接口的 ServeHTTP 方法
// 当有 HTTP 请求到达时,该方法将被调用
func (*MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    // 使用 fmt.Fprint 将 "Hello, world!" 写入到浏览器的响应体中
    fmt.Fprint(w, "Hello, world!")
}

四、Sprint

在 Go 语言中,Sprint函数属于fmt包,用于将多个值格式化为字符串,而不是直接输出到控制台。与PrintPrintln不同,Sprint会返回一个字符串,可以将其用于其他操作,例如赋值给变量或用于进一步处理。

基本用法

package main

import (
    "fmt"
)

func main() {
    // 使用 Sprint 将字符串和数字组合生成一个字符串
    result := fmt.Sprint("Hello, ", "World!", 123)
    fmt.Println(result) // 输出: Hello, World!123
}

多个参数格式化

package main

import (
    "fmt"
)

func main() {
    name := "Alice"
    age := 30

    // 使用 Sprint 组合多个变量为字符串
    output := fmt.Sprintf("Name: %s, Age: %d", name, age)
    fmt.Println(output) // 输出: Name: Alice, Age: 30
}

格式化复杂数据类型

package main

import (
    "fmt"
)

func main() {
    data := []int{1, 2, 3}

    // 格式化切片成字符串
    str := fmt.Sprint(data)
    fmt.Println("Data:", str) // 输出: Data: [1 2 3]
}
  • Sprint用于将格式化的值转化为字符串并返回。
  • Sprintf是更为常用的函数,允许使用格式占位符来进行复杂的格式化。
  • SprintSprintf都不会直接输出到控制台,而是生成字符串,可以用于赋值或进一步的处理。

五、四种类型的输入

在 Go 语言中,输入通常指的是从用户或其他来源读取数据的过程。主要使用fmt包中的函数和os包中的函数来处理输入。

fmt.Scan()

用于从标准输入读取数据,适合读取单个值。

package main

import (
    "fmt"
)

func main() {
    var name string
    fmt.Print("请输入你的名字: ")
    fmt.Scan(&name) // 将输入的名字存储到变量 name 中
    fmt.Println("你好,", name)
}

fmt.Scanf()

用于格式化读取输入,类似于printf的格式化输出。

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("请输入你的名字和年龄(格式:名字 年龄): ")
    fmt.Scanf("%s %d", &name, &age) // 读取一个字符串和一个整数
    fmt.Printf("你好, %s,你的年龄是 %d!
", name, age)
}

fmt.Scanln()

类似于Scan(),但会读取一整行直到换行符。

package main

import (
    "fmt"
)

func main() {
    var input string
    fmt.Print("请输入一行内容: ")
    fmt.Scanln(&input) // 读取整行输入
    fmt.Println("你输入的是:", input)
}

bufio.Reader:

对于更复杂的输入,通常使用bufio.Reader来读取。

它可以输入带空格的字符串

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("请输入一行内容: ")
    input, _ := reader.ReadString('
') // 读取一行输入
    fmt.Println("你输入的是:", input)
}


http://www.kler.cn/a/430451.html

相关文章:

  • Rockect基于Dledger的Broker主从同步原理
  • Vue项目中生成node_modules文件夹的两种常用方法及npm优势
  • Kafka配置公网或NLB访问(TCP代理)
  • 2025加密风云:行业变革与未来趋势全景透视
  • Kafka 快速实战及基本原理详解解析-01
  • 【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地教程
  • 力扣刷题TOP101: 27.BM34 判断是不是二叉搜索树
  • Erlang/OTP绿色版安装和RabbitMQ绿色版安装
  • 如何制作“优美”PPT
  • 【从零开始的LeetCode-算法】383. 赎金信
  • 《Vue进阶教程》第二课:为什么提出组合式API
  • 证书监控续签工具
  • 机器学习(4)Kmeans算法
  • 助推县域客运转型升级!合江荣程运业上线苏州金龙新V系纯电客车
  • TCP Robot Send Recive
  • Apache Echarts和POI
  • 在Vue.js中生成二维码(将指定的url+参数 生成二维码)
  • 大数据算法:初始权重影响对比-BN算法
  • 力扣打卡8:最长上升子序列
  • jenkins邮件的配置详解
  • Java-自动拆箱/装箱/缓存/效率
  • 自然语言处理和大语言模型综述(12.2-12.8)
  • HALCON 算子 之 阈值分割算子
  • ChatGPT客户端安装教程(附下载链接)
  • 美团安卓端采用了多种架构模式和技术框架【偏题】
  • 基于h5的图书管理系统