go语言 fmt的几个打印区别以及打印格式

文章目录

  • 一、打印Print
    • 1.1 fmt.Print 和 fmt.Println
    • 1.2fmt.Printf
    • 1.3 fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln
    • 1.4 fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln
  • 二、打印格式
    • 基本格式动词
    • 整数类型
    • 浮点数和复数类型
    • 字符串和字节切片
    • 布尔类型
    • 指针

一、打印Print

Go 语言的 fmt 包提供了多种打印函数,用于格式化和输出数据。以下是几个常用的 fmt 打印函数及其区别:

  • fmt.Print 和 fmt.Println
  • fmt.Printf
  • fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln
  • fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln

1.1 fmt.Print 和 fmt.Println

fmt.Print:将参数打印到标准输出,不附加任何额外的字符。
fmt.Println:将参数打印到标准输出,并在末尾附加一个换行符。
示例:

package main
import "fmt"func main() {fmt.Print("Hello, ")fmt.Print("World!")// 输出: Hello, World!fmt.Println("Hello, ")fmt.Println("World!")// 输出:// Hello,// World!
}

1.2fmt.Printf

fmt.Printf:根据格式字符串格式化并打印参数。格式字符串可以包含格式动词,例如 %d 表示整数,%s 表示字符串,%v 表示默认格式等。
示例:

package mainimport "fmt"func main() {name := "Alice"age := 30fmt.Printf("Name: %s, Age: %d\n", name, age)// 输出: Name: Alice, Age: 30
}

1.3 fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln

这些函数类似于 fmt.Print, fmt.Printf, 和 fmt.Println,但它们将结果返回为字符串,而不是直接打印到标准输出。

fmt.Sprint:返回格式化后的字符串。
fmt.Sprintf:根据格式字符串返回格式化后的字符串。
fmt.Sprintln:返回格式化后的字符串,并在末尾附加一个换行符。
示例:

package mainimport "fmt"func main() {str := fmt.Sprint("Hello, ", "World!")fmt.Println(str)// 输出: Hello, World!str = fmt.Sprintf("Name: %s, Age: %d", "Alice", 30)fmt.Println(str)// 输出: Name: Alice, Age: 30str = fmt.Sprintln("Hello, ", "World!")fmt.Println(str)// 输出: Hello, World!// (注意末尾的空行)
}

1.4 fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln

这些函数类似于 fmt.Print, fmt.Printf, 和 fmt.Println,但它们将结果输出到指定的 io.Writer(例如文件或网络连接)。

fmt.Fprint:将格式化后的输出写入 io.Writer。
fmt.Fprintf:根据格式字符串将格式化后的输出写入 io.Writer。
fmt.Fprintln:将格式化后的输出写入 io.Writer,并在末尾附加一个换行符。
示例:

package mainimport ("fmt""os"
)func main() {f, err := os.Create("output.txt")if err != nil {fmt.Println(err)return}defer f.Close()fmt.Fprint(f, "Hello, ")fmt.Fprintln(f, "World!")fmt.Fprintf(f, "Name: %s, Age: %d\n", "Alice", 30)
}

上面的代码会在当前目录下创建一个名为 output.txt 的文件,并将以下内容写入其中:

Hello, World!
Name: Alice, Age: 30

总结
fmt.Print 和 fmt.Println:直接将参数打印到标准输出。
fmt.Printf:根据格式字符串格式化并打印参数到标准输出。
fmt.Sprint, fmt.Sprintf, 和 fmt.Sprintln:返回格式化后的字符串,不直接打印。
fmt.Fprint, fmt.Fprintf, 和 fmt.Fprintln:将格式化后的输出写入指定的 io.Writer。

二、打印格式

在 Go 语言的 fmt 包中,格式动词(format verbs)用于控制字符串的格式化输出。不同的格式动词可以用于不同类型的数据,提供多种显示选项。以下是一些常见的格式动词及其含义:

基本格式动词

%v:默认格式输出。
%+v:结构体字段名和值一起输出。
%#v:Go 语言语法格式输出(即,可以直接用作 Go 代码的输出)。
%T:输出值的类型。
%%:字面上的百分号。

整数类型

%b:二进制表示。
%c:相应 Unicode 码点的字符。
%d:十进制表示。
%o:八进制表示。
%O:带零前缀的八进制表示(0o123)。
%x:十六进制表示,小写字母。
%X:十六进制表示,大写字母。
%U:Unicode 格式:U+1234。
%q:单引号围绕的字符字面值,必要时会采用转义表示。

浮点数和复数类型

%b:无小数部分的科学计数法,例如 -123456p-78。
%e:科学计数法,例如 -1.234456e+78。
%E:科学计数法,例如 -1.234456E+78。
%f:有小数部分但无指数部分,例如 123.456。
%F:等价于 %f。
%g:根据实际情况采用 %e 或 %f 格式(以获得更简洁的输出)。
%G:根据实际情况采用 %E 或 %F 格式(以获得更简洁的输出)。

字符串和字节切片

%s:字符串或字节切片的输出。
%q:带双引号的字符串。
%x:每个字节用两字符十六进制表示(小写字母),如 “hex” -> “686578”。
%X:每个字节用两字符十六进制表示(大写字母)。

布尔类型

%t:true 或 false。

指针

%p:十六进制表示的指针值。
示例代码
下面是一个示例代码,演示了各种格式动词的用法:

package mainimport ("fmt"
)type Person struct {Name stringAge  int
}func main() {p := Person{Name: "Alice", Age: 30}fmt.Printf("默认格式: %v\n", p)fmt.Printf("带字段名: %+v\n", p)fmt.Printf("Go 语法格式: %#v\n", p)fmt.Printf("类型: %T\n", p)i := 42fmt.Printf("二进制: %b\n", i)fmt.Printf("字符: %c\n", i)fmt.Printf("十进制: %d\n", i)fmt.Printf("八进制: %o\n", i)fmt.Printf("十六进制: %x\n", i)fmt.Printf("带 Unicode: %U\n", i)fmt.Printf("单引号字符: %q\n", i)f := 3.1415926535fmt.Printf("科学计数法 (小写): %e\n", f)fmt.Printf("科学计数法 (大写): %E\n", f)fmt.Printf("小数部分: %f\n", f)fmt.Printf("根据情况使用 %%e 或 %%f: %g\n", f)s := "hello"fmt.Printf("字符串: %s\n", s)fmt.Printf("带引号字符串: %q\n", s)fmt.Printf("十六进制 (小写): %x\n", s)fmt.Printf("十六进制 (大写): %X\n", s)b := truefmt.Printf("布尔值: %t\n", b)ptr := &pfmt.Printf("指针: %p\n", ptr)
}

输出结果

	默认格式: {Alice 30}带字段名: {Name:Alice Age:30}Go 语法格式: main.Person{Name:"Alice", Age:30}类型: main.Person二进制: 101010字符: *十进制: 42八进制: 52十六进制: 2a带 Unicode: U+002A单引号字符: '*'科学计数法 (小写): 3.141593e+00科学计数法 (大写): 3.141593E+00小数部分: 3.141593根据情况使用 %e 或 %f: 3.14159字符串: hello带引号字符串: "hello"十六进制 (小写): 68656c6c6f十六进制 (大写): 68656C6C6F布尔值: true指针: 0xc000010200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45848.shtml

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

相关文章

字符串类中的常用方法

1 string对象的创建 静态创建 String s1  "abc";  String s2  "abc";  动态创建 String s3  new String("abc"); String s4  new String("abc"); 2string对象的不可变性 任何一个String对象在创建之后都不能对它的…

大数据环境下的房地产数据分析与预测研究的设计与实现

1绪论 1.1研究背景及意义 随着经济的快速发展和城市化进程的推进,房地产市场成为了国民经济的重要组成部分。在中国,房地产行业对经济增长、就业创造和资本投资起到了重要的支撑作用。作为中国西南地区的重要城市,昆明的房地产市场也备受关…

云备份服务端

文件使用工具和json序列化反序列化工具 //文件和json工具类的设计实现 #ifndef __UTIL__ #define __UTIL__ #include<iostream> #include<fstream> #include<string> #include <vector> #include<sys/stat.h> #include"bundle.h" #inc…

FPGA资源容量

Kintex™ 7 https://www.amd.com/zh-tw/products/adaptive-socs-and-fpgas/fpga/kintex-7.html#product-table AMD Zynq™ 7000 SoC https://www.amd.com/en/products/adaptive-socs-and-fpgas/soc/zynq-7000.html#product-table AMD Zynq™ UltraScale™ RFSoC 第一代 AMD Z…

【每日一练】python类的构造方法以及常用的魔术方法详细讲解

在Python中&#xff0c;构造方法是一个用来初始化新创建的对象状态的特殊方法。Python中的构造方法是__init__。此外&#xff0c;Python中的"魔术方法"是Python提供的一系列特殊方法&#xff0c;它们都以双下划线开头和结尾&#xff0c;例如__init__, __str__, __rep…

Redis系列命令更新--Redis列表命令

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;说明&#xff1a;Redis Blpop命令移出并获取列表的第一个元素&#xff1b;如果列表没有元素会阻塞列表直到等到超时或发现可弹出元素为止 &#xff08;2&#xff09;语法&#xff1a;redis 127.0.0.1:63…

mybaits-plus自定义分页查询

1. 引入依赖 在 pom.xml 文件中添加必要的依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId&…

Git进阶(十四):Windows下 git 提示 Repository not found

文章目录 一、前言 一、前言 在Windows10下执行 git clone/pull 的时候出现Repository not found错误。解决方法如下&#xff1a; 打开控制面板 搜索“凭据” 选中“Windows凭据” 在“普通凭据”一栏中查看当前git服务器配置的凭据信息是否正确&#xff0c;出现以上问题的…

081、Python 关于方法重写

所谓方法重写&#xff0c;就是子类对父类已有的方法&#xff0c;重新编写自己的实现版本&#xff0c;这个过程就叫做方法重写&#xff08;override&#xff09;。 说到方法重写&#xff0c;就不得不提多态。因为方法重写是实现多态的一种重要方式。 所谓多态&#xff0c;就是…

Windows的包管理器Chocolatey

Chocolatey 是 Windows 平台上的一个软件包管理工具&#xff0c;类似于 Linux 上的 apt、yum 或者 macOS 上的 Homebrew。你可以通过命令行快速安装、更新和卸载软件包。 一、安装 Chocolatey 查看是否有安装 choco --version 2.3.0如果有显示版本号&#xff0c;说明安装成功…

Laravel IDE Helper:开发者的代码导航灯塔

Laravel IDE Helper&#xff1a;开发者的代码导航灯塔 在Laravel开发过程中&#xff0c;IDE&#xff08;集成开发环境&#xff09;的辅助工具可以极大地提高开发效率和代码质量。Laravel IDE Helper是一个专门为此目的设计的工具&#xff0c;它为PHP IDE提供了额外的上下文信息…

提高自动化测试脚本编写效率 5大关键注意事项

提高自动化测试脚本编写效率能加速测试周期&#xff0c;减少人工错误&#xff0c;提升软件质量&#xff0c;促进项目按时交付&#xff0c;增强团队生产力和项目成功率。而自动化测试脚本编写效率低下&#xff0c;往往会导致测试周期延长&#xff0c;增加项目成本&#xff0c;延…

Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd local wget https://www.python.org/ftp…

git 提交远程仓库 方式

第一种方式&#xff1a; git init //初始化 gitgit clone https://github.com/luckygilrhpp/gitTest.git //克隆远程仓库代码将要提交的文件夹复制到这个clone的远程仓库里面 第二种方式&#xff1a; git init git remote add origin https://github.com/lucky…

高性能存储 SIG 月度动态:优化 xfs dax reflink 时延,独立选型并维护 mdadm 和 ledmon

本次高性能存储月度动态综合了 SIG 在 5、6 两个月的工作进展&#xff0c;包含多项特性支持&#xff0c;性能优化&#xff0c;以及 Bugfix 等。 01 SIG 整体进展 引入 xfs deferred inode inactivation&#xff0c;进一步优化 xfs dax reflink 过程中的抖动时延。 Intel 将在…

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能&#xff0c;我们在游戏中经常会见到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;当玩家走进时碎石自动吸附合并变成一条路&#xff0c;或者一些装饰性的物件做随机运动等等&#xff0c;在引擎没有集成运动图形时&#xff0c;这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点&#xff1a; 动态类型&#xff1a; JavaScript是一种动态类型语言&#xff0c;变量可以存储任意类型的数据&#xff0c;无需事先声明变量的类型。事件驱动&#xff1a;JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

group by 与 distinct去重性能

GROUP BY和DISTINCT在数据库查询中都可以用于去重&#xff0c;但它们的性能差异取决于多个因素&#xff0c;包括数据集的大小、数据库的结构和索引、以及查询的具体内容。 处理方式&#xff1a; DISTINCT&#xff1a;它会扫描整个数据集&#xff0c;然后删除重复的记录&#xf…

机体坐标系和导航坐标系

目录 机体坐标系&#xff08;Body Frame&#xff09;例子&#xff1a;无人机的机体坐标系 导航坐标系&#xff08;Navigation Frame&#xff09;例子&#xff1a;地球固定的导航坐标系 具体例子说明机体坐标系描述导航坐标系描述 总结 机体坐标系&#xff08;Body Frame&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…