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

news2025/1/6 19:49:24

目录

一、三种类型的输出

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.coloradmin.cn/o/2257353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pyenv 安装脚本解读

pyenv 安装脚本 curl https://pyenv.run | bash执行上面这一行脚本就可以安装pyenv来满足你对 Python 多版本共存以及切换的支持。 pyenv搭配virtualenv可以满足你对Python虚拟环境版本的支持。个人感觉pyenv比conda更轻量,更推荐使用。 那么上面的脚本到底干了什…

OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用

OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用 文章目录 OpenAI 12Days 第二天 强化微调(RFT):推动语言模型在科学研究中的应用RFT的工作原理与应用领域案例研究:基因突变…

柯桥职场商务英语生活英语口语培训外贸纺织口语学习

"等一下"该怎么说? 大家应该都知道,wait a moment是一个祈使句,祈使句就难免带有命令的口吻,还有点不耐烦。 如果你把“等一下”说成wait a moment,外国人多半认为你是个傲慢无礼的人。毕竟在他们看来wait a…

嵌入式蓝桥杯学习7 产生PWM

Cubemx配置 打开cubemx,前面的配置看上文,这里主要配置定时器产生PWM波。 以PA1的TIM2-CH2通道为例进行演示。 1.在Timers中打开TIM2,将Channel2配置为PWM Generation CH2。 2.将Clock Source 选择为Internal Clock。 3.配置Paramater Settings中的参…

SQL Server中SELECT (Transact-SQL)语法定义和解释

语法定义&#xff1a; <SELECT statement> ::[ WITH { [ XMLNAMESPACES , ] [ <common_table_expression> [ , ...n ] ] } ]<query_expression>[ ORDER BY <order_by_expression> ][ <FOR Clause> ][ OPTION ( <query_hint> [ , ...n ] )…

证书监控续签工具

详细实现方式以及代码下载请前往https://www.passerma.com/article/91 一个基于 go 的 ssl 证书监控续签工具&#xff0c;用于监控阿里云免费 ssl 证书的有效期&#xff0c;并在证书即将过期时自动续签证书 仅支持续签阿里云的免费证书 页面 使用方法 1.申请阿里云账号 2.…

【开源】A063—基于Spring Boot的农产品直卖平台的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

HDR视频技术之六:色调映射

图像显示技术的最终目的就是使得显示的图像效果尽量接近人们在自然界中观察到的对应的场景。 HDR 图像与视频有着更高的亮度、更深的位深、更广的色域&#xff0c;因此它无法在常见的普通显示器上显示。 入门级的显示器与播放设备&#xff08;例如普通人家使用的电视&#xff0…

【C++笔记】map和set的使用

前言 各位读者朋友们大家好&#xff01;上期我们讲完了二叉搜索树这一数据结构&#xff0c;这一期我们来讲STL中的map和set这两大容器。这两个容器的底层是红黑树&#xff0c;红黑树的底层是平衡二叉搜索树。 目录 前言一. 序列式容器和关联式容器二. set系列的使用2.1 set类…

DevOps持续集成

DevOps流程 第一步安装git 关闭防火墙 systemctl stop firewalld cd /usr/loacl vim docker-compose.yml docker search gitlab 拉取gitlab镜像 2.33GB docker pull gitlab/gitlab-ce:latestvim docker-compose.yml修改docker-compose.yml version: 3.1 services:gitlab:i…

TCP的“可靠性”(上)

目录 TCP的“可靠性”&#xff08;上&#xff09;确认应答&#xff08;可靠性传输的基础&#xff09;超时重传连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09; TCP的“可靠性”&#xff08;上&#xff09; 想必大家都或多或少的听说过TCP的特性&#xff1a;有连…

【C++】求第二大的数详细解析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;输入描述&#x1f4af;解题思路分析1. 题目核心要求2. 代码实现与解析3. 核心逻辑逐步解析定义并初始化变量遍历并处理输入数据更新最大值与次大值输…

Linux图形化工具推荐

1、MobaXterm MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - DownloadFree X server for Windows with tabbed SSH terminal, telnet, RDP, VNC and X11-forwarding - Downloadhttps://mobaxterm.mobatek.net/download.html 2、FinalShell FinalShell SSH工具,服…

SQL计算字段:拼接字段

为了说明如何使用计算字段&#xff0c;本文将通过一个简单的示例来展示如何将两列组合成一个标题。假设Vendors表包含供应商的名称和国家信息&#xff0c;我们希望生成一个报表&#xff0c;其中列出每个供应商的名称和所在国家&#xff0c;并且需要格式化名称显示&#xff0c;国…

【Spring项目】表白墙,留言板项目的实现

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;项目实现准备 1&#xff1a;需求 2&#xff1a;准备工作 &#xff08;1&#xff09;…

MySQL | 尚硅谷 | 第12章_MySQL数据类型精讲

MySQL笔记&#xff1a;第12章_MySQL数据类型精讲 文章目录 MySQL笔记&#xff1a;第12章_MySQL数据类型精讲第12章_MySQL数据类型精讲 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择&#xff1f;演示…

ElasticSearch常见面试题汇总

一、ElasticSearch基础&#xff1a; 1、什么是Elasticsearch&#xff1a; Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎&#xff0c;每个字段都被索引并可被搜索&#xff0c;可以快速存储、搜索、分析海量的数据。 全文检索是指对每一个词建立一个索引…

40分钟学 Go 语言高并发:负载均衡与服务治理

负载均衡与服务治理 一、知识要点总览 模块核心内容技术实现难度负载策略轮询、权重、最小连接数自定义负载均衡器中服务降级服务降级、熔断降级、限流降级Hystrix模式高熔断机制熔断器状态机、失败计数、自动恢复Circuit Breaker高限流设计令牌桶、滑动窗口、计数器Rate Lim…

克服大规模语言模型限制,构建新的应用方法——LangChain

大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命&#xff0c;改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展&#xff0c;大模型的数据集(包括多模态数据集)制作已经形成了规约&#xff0c;Meta、Go…

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/144353087 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 VLMEva…