以身例子從stdin中讀取
使用fmt.Scanf 可讀取格式化輸入,適合簡單結構化數據,但字符串遇空格截止;2. 推薦使用bufio.Scanner 逐行讀取,支持多行輸入、EOF 檢測和管道輸入,並可處理掃描錯誤;3. 使用io.ReadAll(os.Stdin) 一次性讀取全部輸入,適用於處理大塊數據或文件流;4. 實時按鍵響應需第三方庫如golang.org/x/term,常規場景使用bufio 已足夠;實際建議:交互式簡單輸入用fmt.Scan,行輸入或管道用bufio.Scanner,大塊數據用io.ReadAll,且始終處理錯誤以避免靜默失敗。
在Go 語言中,從標準輸入( stdin
)讀取數據是一個常見的需求,比如讀取用戶輸入或處理管道數據。下面是一些常見且實用的方法,結合Go by Example
的風格來展示如何從stdin
讀取內容。

1. 使用fmt.Scanf
讀取格式化輸入
適用於讀取結構化輸入,比如單個數字或字符串。
package main import "fmt" func main() { var name string var age int fmt.Print("Enter name and age: ") fmt.Scanf("%s %d", &name, &age) fmt.Printf("Hello %s, you are %d years old.\n", name, age) }
⚠️ 注意:
Scanf
遇到空格會停止讀取字符串,適合簡單場景。
2. 使用bufio.Scanner
逐行讀取(推薦)
這是最常用的方式,適合讀取多行輸入或處理EOF
(如管道輸入)。
package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) fmt.Println("Enter text (Ctrl D to end):") for scanner.Scan() { line := scanner.Text() if line == "exit" { break } fmt.Printf("You entered: %s\n", line) } if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } }
✅ 優點:
- 支持按行讀取
- 兼容終端輸入和管道(如
echo "hello" | go run main.go
)- 可檢測
EOF
(Ctrl D on Unix, Ctrl Z on Windows)
3. 一次性讀取全部輸入(適合處理文件或大塊數據)
使用io.ReadAll
讀取整個stdin
內容。
package main import ( "fmt" "io" "os" ) func main() { fmt.Println("Paste content (Ctrl D to finish):") data, err := io.ReadAll(os.Stdin) if err != nil { fmt.Fprintln(os.Stderr, "Error reading input:", err) return } fmt.Printf("Read %d bytes:\n%s", len(data), data) }
? 適用場景:
- 處理JSON、配置文件等完整輸入
- 與管道配合使用,如
cat data.txt | go run main.go
4. 讀取單個字符或非緩衝輸入
如果需要實時響應按鍵(如游戲或交互式工具),可以使用系統級調用,但標準庫不直接支持。可以藉助第三方庫如golang.org/x/term
。
不過對於普通stdin 讀取, bufio
已足夠。
實際使用建議
-
交互式輸入:用
fmt.Scan
或fmt.Scanf
快速獲取簡單值。 -
行輸入或管道處理:優先使用
bufio.Scanner
。 -
大塊數據或文件流:用
io.ReadAll(os.Stdin)
。 - 記得處理
scanner.Err()
和error
,避免靜默失敗。
基本上就這些常見方式。 Go 的標準庫簡潔高效,配合os.Stdin
能輕鬆處理大多數輸入場景。
以上是以身例子從stdin中讀取的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Maven是Java項目管理和構建的標準工具,答案在於它通過pom.xml實現項目結構標準化、依賴管理、構建生命週期自動化和插件擴展;1.使用pom.xml定義groupId、artifactId、version和dependencies;2.掌握核心命令如mvnclean、compile、test、package、install和deploy;3.利用dependencyManagement和exclusions管理依賴版本與衝突;4.通過多模塊項目結構組織大型應用並由父POM統一管理;5.配

SetupaMaven/GradleprojectwithJAX-RSdependencieslikeJersey;2.CreateaRESTresourceusingannotationssuchas@Pathand@GET;3.ConfiguretheapplicationviaApplicationsubclassorweb.xml;4.AddJacksonforJSONbindingbyincludingjersey-media-json-jackson;5.DeploytoaJakar

要使用Java生成哈希值,可通過MessageDigest類實現。 1.獲取指定算法的實例,如MD5或SHA-256;2.調用.update()方法傳入待加密數據;3.調用.digest()方法獲取哈希字節數組;4.將字節數組轉換為十六進製字符串以便讀取;對於大文件等輸入,應分塊讀取並多次調用.update();推薦使用SHA-256而非MD5或SHA-1以確保安全性。

理解區塊鏈核心組件,包括區塊、哈希、鍊式結構、共識機制和不可篡改性;2.創建包含數據、時間戳、前一哈希和Nonce的Block類,並實現SHA-256哈希計算與工作量證明挖礦;3.構建Blockchain類管理區塊列表,初始化創世區塊,添加新區塊並驗證鏈的完整性;4.編寫主類測試區塊鏈,依次添加交易數據區塊並輸出鏈狀態;5.可選增強功能包括交易支持、P2P網絡、數字簽名、RESTAPI和數據持久化;6.可選用HyperledgerFabric、Web3J或Corda等Java區塊鏈庫進行生產級開

@property裝飾器用於將方法轉為屬性,實現屬性的讀取、設置和刪除控制。 1.基本用法:通過@property定義只讀屬性,如area根據radius計算並直接訪問;2.進階用法:使用@name.setter和@name.deleter實現屬性的賦值驗證與刪除操作;3.實際應用:在setter中進行數據驗證,如BankAccount確保餘額非負;4.命名規範:內部變量用_前綴,property方法名與屬性一致,通過property統一訪問控制,提升代碼安全性和可維護性。

首先通過JavaScript獲取用戶系統偏好和本地存儲的主題設置,初始化頁面主題;1.HTML結構包含一個按鈕用於觸發主題切換;2.CSS使用:root定義亮色主題變量,.dark-mode類定義暗色主題變量,並通過var()應用這些變量;3.JavaScript檢測prefers-color-scheme並讀取localStorage決定初始主題;4.點擊按鈕時切換html元素上的dark-mode類,並將當前狀態保存至localStorage;5.所有顏色變化均帶有0.3秒過渡動畫,提升用戶

是的,一個常見的CSS下拉菜單可以通過純HTML和CSS實現,無需JavaScript。 1.使用嵌套的ul和li構建菜單結構;2.通過:hover偽類控制下拉內容的顯示與隱藏;3.父級li設置position:relative,子菜單使用position:absolute進行定位;4.子菜單默認display:none,懸停時變為display:block;5.可通過嵌套實現多級下拉,結合transition添加淡入動畫,配合媒體查詢適配移動端,整個方案簡潔且無需JavaScript支持,適合大

使用uuid模塊可跨平台獲取本機第一個網卡的MAC地址,無需第三方庫,通過uuid.getnode()轉換為標準格式;2.使用subprocess調用系統命令如ipconfig或ifconfig,結合正則提取所有網卡MAC地址,適用於需獲取多個網卡信息的場景;3.使用第三方庫getmac,安裝後調用get_mac_address()即可獲取MAC,支持按接口或IP查詢,但需額外依賴;綜上,若無需外部庫則推薦uuid方法,若需靈活獲取多網卡信息可用subprocess方案,允許安裝依賴時getma
