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

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 mainimport "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 mainimport "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:=18fmt.Printf("小明今年%d岁了
",age) // 输出 小明今年18岁了price:=100.5fmt.Printf("价格是%.2f元
",price) // 输出 价格是100.50元//%vfmt.Printf("name=%v,age=%v,price=%v
",name,age,price) // 输出 naem=小明, age=18,price=100.5data := []int{1, 2, 3}fmt.Printf("Data: %v
", data) // 输出: Data: [1 2 3]fmt.Printf("Type of age: %T
", age) // 输出: Type of age: intfmt.Printf("Type of price: %T
", price) // 输出: Type of price: float64fmt.Printf("Type of data: %T
", data) // 输出: Type of data: []int//%tfmt.Printf("Is age true? %t
", age == 18) // 输出: Is age true? truefmt.Printf("Is price true? %t
", price == 100.5) // 输出: Is price true? truefmt.Printf("Is data true? %t
", data == nil) // 输出: Is data true? false//%bnum := 10fmt.Printf("二进制表示: %d is %b
", num, num) // 输出: 二进制表示: 10 is 1010//%cfmt.Printf("字符表示: %d is %c
", 65, 65) // 输出: 字符表示: 65 is A//%dfmt.Printf("十进制表示: %d is %d
", num, num) // 输出: 十进制表示: 10 is 10//%ofmt.Printf("八进制表示: %d is %o
", num, num) // 输出: 八进制表示: 10 is 12//%xfmt.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 端口,并使用自定义的处理器 MyHandlerhttp.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 mainimport ("fmt"
)func main() {// 使用 Sprint 将字符串和数字组合生成一个字符串result := fmt.Sprint("Hello, ", "World!", 123)fmt.Println(result) // 输出: Hello, World!123
}

多个参数格式化

package mainimport ("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 mainimport ("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 mainimport ("fmt"
)func main() {var name stringfmt.Print("请输入你的名字: ")fmt.Scan(&name) // 将输入的名字存储到变量 name 中fmt.Println("你好,", name)
}

fmt.Scanf()

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

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

fmt.Scanln()

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

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

bufio.Reader:

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

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

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

相关文章:

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

目录 一、三种类型的输出 print: println: printf: 总结: 代码展示: 二、格式化占位符 %s:用于格式化字符串。 %d:用于格式化整数。 %f:用于格式化浮点数。 %v&#xff1…...

React Native的router解析

写在前面 React Native(简称RN)是一个由Facebook开发的开源框架,用于构建跨平台的移动应用程序。在RN中,路由(router)是非常重要的概念,它允许我们在不同的屏幕之间进行导航和切换。 以下是RN…...

Linux update-alternatives 命令详解

1、查看所有候选项 sudo update-alternatives --list (java筛选​​​​​​​sudo update-alternatives --list java) 2、​​​​​​​更换候选项 sudo update-alternatives --config java 3、自动选择优先级最高的作为默认项 sudo update-alterna…...

【踩坑】修复报错libcurl.so.4、LIBFFI_BASE_7.0、libssl.so.3

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ libcurl.so.4: sudo apt install curl -y LIBFFI_BASE_7.0: conda install libffi3.3 -y libssl.so.3: sudo apt install -y openssl li…...

python网络爬虫基础:html基础概念与遍历文档树

开始之前导入html段落&#xff0c;同时下载好本节将用到的库。下载方式为&#xff1a;pip install beautifulsoup4 一点碎碎念&#xff1a;为什么install后面的不是bs4也不是BeautifulSoup&#xff1f; html_doc """ <html><head><title>The…...

【已解决】MacOS上VMware Fusion虚拟机打不开的解决方法

在使用VMware Fusion时&#xff0c;不少用户可能会遇到虚拟机无法打开的问题。本文将为大家提供一个简单有效的解决方法&#xff0c;只需删除一个文件&#xff0c;即可轻松解决这一问题。 一、问题现象 在MacOS系统上&#xff0c;使用VMware Fusion运行虚拟机时&#xff0c;有…...

经典视觉神经网络1 CNN

一、概述 输入的图像都很大&#xff0c;使用全连接网络的话&#xff0c;计算的代价较高&#xff0c;图像也很难保留原本特征。 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种专门用于处理具有网格状结构数据的深度学习模型。主要应用…...

一些硬件知识【2024/12/6】

MP6924A: 正点原子加热台拆解&#xff1a; PMOS 相比 NMOS 的缺点&#xff1a; 缺点描述迁移率低PMOS 中的空穴迁移率约为电子迁移率的 1/3 到 1/2&#xff0c;导致导通电流较低。开关速度慢由于迁移率较低&#xff0c;PMOS 的开关速度比 NMOS 慢&#xff0c;不适合高速数字电…...

网络安全法-网络安全支持与促进

第二章 网络安全支持与促进 第十五条 国家建立和完善网络安全标准体系。国务院标准化行政主管部门和国务院其他有关部门根据各自的职责&#xff0c;组织制定并适时修订有关网络安全管理以及网络产品、服务和运行安全的国家标准、行业标准。 国家支持企业、研究机构、高等学…...

【Docker】如何在Docker中配置防火墙规则?

Docker本身并不直接管理防火墙规则&#xff1b;它依赖于主机系统的防火墙设置。不过&#xff0c;Docker在启动容器时会自动配置一些iptables规则来管理容器网络流量。如果你需要更细粒度地控制进出容器的流量&#xff0c;你需要在主机系统上配置防火墙规则。以下是如何在Linux主…...

Cesium 问题: 添加billboard后移动或缩放地球,标记点位置会左右偏移

文章目录 问题分析原先的:添加属性——解决漂移移动问题产生新的问题:所选的经纬度坐标和应放置的位置有偏差解决坐标位置偏差的问题完整代码问题 添加 billboard 后, 分析 原先的: // 图标加载 function addStation ({lon, lat, el, testName...

使用Python3 连接操作 OceanBase数据库

注&#xff1a;使用Python3 连接 OceanBase数据库&#xff0c;可通过安装 PyMySQL驱动包来实现。 本次测试是在一台安装部署OBD的OceanBase 测试linux服务器上&#xff0c;通过python来远程操作OceanBase数据库。 一、Linux服务器通过Python3连接OceanBase数据库 1.1 安装pyth…...

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中&#xff0c;我们的Cypher都用的是字符串&#xff0c;字符串拼接简单&#xff0c;但存在写错的风险&#xff0c;对于一些比较懒的开发者&#xff0c;甚至觉得之间写字符串还更自在快速&#xff0c;也确实&#xff0c;但如果在后期需要…...

Flutter如何调用java接口如何导入java包

文章目录 1. Flutter 能直接调用 Java 的接口吗&#xff1f;如何调用 Java 接口&#xff1f; 2. Flutter 能导入 Java 的包吗&#xff1f;步骤&#xff1a; 总结 在 Flutter 中&#xff0c;虽然 Dart 是主要的开发语言&#xff0c;但你可以通过**平台通道&#xff08;Platform …...

Redis 数据结构(一)—字符串、哈希表、列表

Redis&#xff08;版本7.0&#xff09;的数据结构主要包括字符串&#xff08;String&#xff09;、哈希表&#xff08;Hash&#xff09;、列表&#xff08;List&#xff09;、集合&#xff08;Set&#xff09;、有序集合&#xff08;Sorted Set&#xff09;、超日志&#xff08…...

day1:ansible

ansible-doc <module_name>&#xff08;如果没有网&#xff0c;那这个超级有用&#xff09; 这个很有用&#xff0c;用来查单个模块的文档。 ansible-doc -l 列出所有模块 ansible-doc -s <module_name> 查看更详细的模块文档。 ansible-doc --help 使用 --help …...

如何设置Java爬虫的异常处理?

在Java爬虫中设置异常处理是非常重要的&#xff0c;因为网络请求可能会遇到各种问题&#xff0c;如连接超时、服务器错误、网络中断等。通过合理的异常处理&#xff0c;可以确保爬虫的稳定性和健壮性。以下是如何在Java爬虫中设置异常处理的步骤和最佳实践&#xff1a; 1. 使用…...

阿里云盘permission denied

问题是执行 ./aliyunpan 时遇到了 Permission denied 的错误。这通常是因为文件没有执行权限。以下是解决问题的步骤&#xff1a; 检查文件权限 运行以下命令检查文件的权限&#xff1a; ls -l aliyunpan输出中会看到类似以下内容&#xff1a; -rw-r--r-- 1 user group 123…...

在 Ubuntu 24 上安装 Redis 7.0.15 并配置允许所有 IP 访问

前提条件 一台运行 Ubuntu 24 的服务器拥有 sudo 权限的用户 步骤一&#xff1a;更新系统包 首先&#xff0c;确保系统包是最新的&#xff0c;以避免潜在的依赖问题。 sudo apt update sudo apt upgrade -y步骤二&#xff1a;安装编译 Redis 所需的依赖 Redis 需要一些编译…...

构建高效可靠的分布式推理系统:深入解析控制器与模型服务的协同工作

在现代互联网应用中,随着用户需求的增长和技术的进步,单一服务器已经难以满足大规模并发请求的需求。为了提升系统的性能和可靠性,开发者们越来越多地采用分布式架构。本文将结合具体的代码示例,深入浅出地探讨如何构建一个高效的分布式推理系统,并详细解析其中的关键组件…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好&#xff0c;我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题&#xff0c;统一使用 二重复合函数&#xff1a; z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式&#xff08;偏导…...