編程筆記 Golang基礎 013 格式化輸入輸出

編程筆記 Golang基礎 013 格式化輸入輸出

  • 一、格式化輸出
        • 1. fmt.Print系列函數
        • 2. Printf格式說明
        • 3. 格式化布爾類型
  • 二、格式化輸入
        • 1. fmt.Scan系列函數
        • 注意事項
  • 三、練習
  • 小結

Go語言中的格式化輸入和輸出主要通過標準庫 fmt 包來實現。主要是輸出需要格式化。

一、格式化輸出

1. fmt.Print系列函數
  • fmt.Println: 輸出內容并自動添加換行符。
  • fmt.Printf: 格式化的輸出,允許按照指定的格式字符串打印變量值。
  • fmt.Print: 輸出內容,不添加換行符。
package main
import "fmt"func main() {fmt.Println("Hello, World!") // 自動添加換行fmt.Printf("Today is %s\n", "2024年2月21日") // 格式化輸出日期fmt.Print("No newline here") // 不會自動添加換行
}
2. Printf格式說明

Printf 的格式字符串中可以包含特殊的占位符(如 %d, %s, %v, %T 等),它們會被相應類型的變量替換:

  • %d: 整數
  • %f%g: 浮點數或科學計數法表示的數字
  • %t: 布爾類型
  • %s: 字符串
  • %v: 值的默認格式表示(根據不同類型顯示)
  • %#v: 類似 %v,但輸出結構體時會包含字段名
  • %T: 輸出值的類型名稱
  • %q: 雙引號包裹的字符串字面量形式(適用于字符串和字符)
  • %p: 指針的內存地址

示例:

fmt.Printf("%d, %.2f, %t, %s, %#v, %T\n", 123, 3.14159, true, "Golang", struct{A int}{A: 42}, myVar)
3. 格式化布爾類型

布爾類型的值在使用 %t 格式化時,會輸出 truefalse

var isDone bool = false
fmt.Printf("Task is done? %t\n", isDone) // 輸出:Task is done? false

二、格式化輸入

1. fmt.Scan系列函數
  • fmt.Scan: 從標準輸入讀取數據到一系列變量中,空格作為分隔符。
  • fmt.Scanf: 類似于 C 中的 scanf,接受一個格式字符串和對應變量列表,根據格式進行輸入。
  • fmt.Scanln: 類似于 Scanf,但在讀取一行后停止,并丟棄結尾的換行符。
  • fmt.Sscan: 從字符串中掃描。
  • fmt.Sscanf: 類似于 Scanf,但是針對字符串而不是標準輸入。
  • fmt.Sscanln: 對字符串進行類似 Scanln 的操作。

示例:

var name string
var age int
fmt.Println("請輸入姓名和年齡(用空格分隔)")
_, _ = fmt.Scan(&name, &age) // 從鍵盤輸入讀取姓名和年齡// 或者使用 Sscanf 從已知字符串讀取
input := "Alice 30"
fmt.Sscanf(input, "%s %d", &name, &age)
注意事項
  • 使用格式化輸入時務必注意安全性和有效性檢查,確保輸入的數據能夠正確轉換為預期類型。
  • 在處理用戶輸入時,應盡可能避免直接將輸入用于數據庫查詢等敏感操作,防止 SQL 注入等問題。
  • Go 語言推薦使用 fmt.Scanfmt.Scanln 的變體 fmt.Scanffmt.Scanf 以及其配套的格式字符串進行精確控制輸入解析。

三、練習

type user struct {name string
}func main() {u := user{"guo"}//Printf 格式化輸出fmt.Printf("% + v\n", u)     //格式化輸出結構fmt.Printf("%#v\n", u)       //輸出值的 Go 語言表示方法fmt.Printf("%T\n", u)        //輸出值的類型的 Go 語言表示fmt.Printf("%t\n", true)     //輸出值的 true 或 falsefmt.Printf("%b\n", 1024)     //二進制表示fmt.Printf("%c\n", 11111111) //數值對應的 Unicode 編碼字符fmt.Printf("%d\n", 10)       //十進制表示fmt.Printf("%o\n", 8)        //八進制表示fmt.Printf("%q\n", 22)       //轉化為十六進制并附上單引號fmt.Printf("%x\n", 1223)     //十六進制表示,用a-f表示fmt.Printf("%X\n", 1223)     //十六進制表示,用A-F表示fmt.Printf("%U\n", 1233)     //Unicode表示fmt.Printf("%b\n", 12.34)    //無小數部分,兩位指數的科學計數法6946802425218990p-49fmt.Printf("%e\n", 12.345)   //科學計數法,e表示fmt.Printf("%E\n", 12.34455) //科學計數法,E表示fmt.Printf("%f\n", 12.3456)  //有小數部分,無指數部分fmt.Printf("%g\n", 12.3456)  //根據實際情況采用%e或%f輸出fmt.Printf("%G\n", 12.3456)  //根據實際情況采用%E或%f輸出fmt.Printf("%s\n", "wqdew")  //直接輸出字符串或者[]bytefmt.Printf("%q\n", "dedede") //雙引號括起來的字符串fmt.Printf("%x\n", "abczxc") //每個字節用兩字節十六進制表示,a-f表示fmt.Printf("%X\n", "asdzxc") //每個字節用兩字節十六進制表示,A-F表示fmt.Printf("%p\n", 0x123)    //0x開頭的十六進制數表示
}

小結

初學必備知識。實際開發中也會經常用到。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696175.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

掃盲貼:Svg動畫和Canvas動畫有什么區別

hello,我是貝格前端工場,網頁中動畫的實現有N種方式,比如css動畫,js動畫,svg動畫,canvas動畫等等,每一種動畫都有對應的場景,本問重點介紹一下svg和canvas動畫的異同點,歡…

大工程 從0到1 數據治理 數倉篇(sample database classicmodels _No.7)

大工程 從0到1 數據治理 之數倉篇 我這里還是sample database classicmodels為案列,可以下載,我看 網上還沒有類似的 案列,那就 從 0-1開始吧! 提示:寫完文章后,目錄可以自動生成,如何生成可參…

TRS 2024 論文閱讀 | 基于點云處理和點Transformer網絡的人體活動連續識別

無線感知/雷達成像部分最新工作<持續更新>: 鏈接地址 注1:本文系“無線感知論文速遞”系列之一,致力于簡潔清晰完整地介紹、解讀無線感知領域最新的頂會/頂刊論文(包括但不限于 Nature/Science及其子刊; MobiCom, Sigcom, MobiSys, NSDI, SenSys, Ubicomp; JSAC, 雷達學…

提高代碼質量的 10 條編碼原則

提高代碼質量的 10 條編碼原則 本文轉自 公眾號 ByteByteGo&#xff0c;如有侵權&#xff0c;請聯系&#xff0c;立即刪除 今天來聊聊提高代碼質量的 10 條編碼原則。 軟件開發需要良好的系統設計和編碼標準。我們在下圖中列出了 10 條良好的編碼原則。 01 遵循代碼規范 我們…

Studio One破解版和正版的區別 Studio One購買是永久的嗎

在過去的很長一段時間里&#xff0c;很多小伙伴想要使用一款軟件時&#xff0c;可能第一時間就去網上尋找破解版的資源&#xff0c; 白嫖的資源固然很香&#xff0c;但隨著法制的健全和人們版權意識的增強&#xff0c;現在破解版的資源是越來越少了。同時破解版的資源也會伴隨著…

大數據計算技術秘史(上篇)

在之前的文章《2024 年&#xff0c;一個大數據從業者決定……》《存儲技術背后的那些事兒》中&#xff0c;我們粗略地回顧了大數據領域的存儲技術。在解決了「數據怎么存」之后&#xff0c;下一步就是解決「數據怎么用」的問題。 其實在大數據技術興起之前&#xff0c;對于用戶…

react實現拖拽的插件

插件一&#xff1a;dnd-kit 插件官網鏈接https://docs.dndkit.com/introduction/installation 插件二&#xff1a;react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 兩個插件的區別&#xff1a; 插件一可以做到從區域A拖住到區域B 插件二…

平臺組成-門戶服務

整體是從用戶視角&#xff0c;從外往內介紹。前面講了平臺的幾個模塊&#xff08;就是前端部署包&#xff09;。今天開始介紹后臺服務&#xff08;微服務&#xff0c;SpringCloud&#xff0c;通過-jar 參數啟動的jar包&#xff09;。 門戶服務完成登錄、注冊、界面配置、功能鏈…

java面試JVM虛擬機篇

1 JVM組成 1.1 JVM由那些部分組成&#xff0c;運行流程是什么&#xff1f; 難易程度&#xff1a;☆☆☆ 出現頻率&#xff1a;☆☆☆☆ JVM是什么 Java Virtual Machine Java程序的運行環境&#xff08;java二進制字節碼的運行環境&#xff09; 好處&#xff1a; 一次編寫&a…

Go 原子操作有哪些?

Go atomic包是最輕量級的鎖&#xff08;也稱無鎖結構&#xff09;&#xff0c;可以在不形成臨界區和創建互斥量的情況下完成并發安全的值替換操作&#xff0c;不過這個包只支持int32/int64/uint32/uint64/uintptr這幾種數據類型的一些基礎操作&#xff08;增減、交換、載入、存…

Excel之index、MATCH面試題、VLOOKUP函數,

VLOOKUP() 在表格的首列查找指定的數值&#xff0c;并返回表格當前行中指定列處的數值。 結構&#xff1a;VLOOKUP(查找值,查找區域,列序數,匹配條件) 解釋&#xff1a;VLOOKUP(找誰,在哪里找,第幾列,0或1) 1.目的&#xff1a;根據【產品】查找【銷量】 公式&#xff1a;V…

pikachu靶場-XSS

XSS&#xff1a; XSS&#xff08;跨站腳本&#xff09;概述 Cross-Site Scripting 簡稱為“CSS”&#xff0c;為避免與前端疊成樣式表的縮寫"CSS"沖突&#xff0c;故又稱XSS。一般XSS可以分為如下幾種常見類型&#xff1a; 1.反射性XSS; 2.存儲型XSS; 3.DOM型XSS; …

QT的UI入門

二、UI入門 QWidget類&#xff08;熟悉&#xff09; QWidget類是所有組件和窗口的基類&#xff0c;內部包含了一些基礎的界面特性。 常用屬性&#xff1a; 修改坐標 x : const int 橫坐標&#xff0c;每個圖形的左上角為定位點&#xff0c;橫軸的零點在屏幕的最左邊&#xff0c…

js實現復制功能

一、具體場景 前端有時需要實現點擊按鈕復制的功能&#xff0c;這個時候就不能讓用戶去手動選擇內容右鍵復制了。 二、實現方式 1. document.execCommand &#xff08;1&#xff09;具體實現 復制時&#xff0c;先選中文本&#xff0c;然后調用document.execCommand(‘copy’)…

171基于matlab的隨機共振微弱信號檢測

基于matlab的隨機共振微弱信號檢測&#xff0c;隨機共振描述了過阻尼布朗粒子受周期性信號和隨機噪聲的共同作用下,在非線性雙穩態系統中所發生的躍遷現象. 隨機共振可用于弱信號的檢測。程序已調通&#xff0c;可直接運行。

共享之力:分布式計算的奇跡

在信息時代的浪潮中&#xff0c;分布式計算作為一種革命性的技術&#xff0c;已經深刻地改變了我們對計算和數據處理的理解方式。其發展歷程既是一段精彩的科技史&#xff0c;也是一段充滿探索與突破的冒險故事&#xff0c;從最初的概念探索到如今的普及應用&#xff0c;分布式…

HashMap 源碼學習-jdk1.8

1、一些常量的定義 這里針對MIN_TREEIFY_CAPACITY 這個值進行解釋一下。 java8里面&#xff0c;HashMap 的數據結構是數組 &#xff08;鏈表或者紅黑樹&#xff09;&#xff0c;每個數組節點下可能會存在鏈表和紅黑樹之間的轉換&#xff0c;當同一個索引下面的節點超過8個時…

【Webpack】處理字體圖標和音視頻資源

處理字體圖標資源 1. 下載字體圖標文件 打開阿里巴巴矢量圖標庫open in new window選擇想要的圖標添加到購物車&#xff0c;統一下載到本地 2. 添加字體圖標資源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字體…

[計算機網絡]---TCP協議

前言 作者&#xff1a;小蝸牛向前沖 名言&#xff1a;我可以接受失敗&#xff0c;但我不能接受放棄 如果覺的博主的文章還不錯的話&#xff0c;還請點贊&#xff0c;收藏&#xff0c;關注&#x1f440;支持博主。如果發現有問題的地方歡迎?大家在評論區指正 目錄 一 、TCP協…

Java并發基礎:原子類之AtomicBoolean全面解析

本文概要 AtomicBoolean類優點在于能夠確保布爾值在多線程環境下的原子性操作&#xff0c;避免了繁瑣的同步措施&#xff0c;它提供了高效的非阻塞算法實現&#xff0c;可以大大提成程序的并發性能&#xff0c;AtomicBoolean的API設計非常簡單易用。 AtomicBoolean核心概念 …