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.pswp.cn/web/45848.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45848.shtml
英文地址,請注明出處:http://en.pswp.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;大數據信用可以為金融機構提供更全面的…