Golang控制臺(tái)輸入與輸入是用內(nèi)置的 fmt 包來(lái)完成的。初學(xué)時(shí)要經(jīng)常用到。
一、控制臺(tái)
在軟件開(kāi)發(fā)工具(如Goland)中,控制臺(tái)通常指的是集成開(kāi)發(fā)環(huán)境(IDE)中的一個(gè)組件或面板,它模擬了命令行界面(CLI),允許開(kāi)發(fā)者直接在IDE內(nèi)部運(yùn)行和調(diào)試程序,以及與操作系統(tǒng)進(jìn)行交互。這個(gè)“控制臺(tái)”提供了對(duì)系統(tǒng)命令行的訪問(wèn),無(wú)需離開(kāi)IDE即可執(zhí)行命令、運(yùn)行腳本、編譯代碼、查看輸出、啟動(dòng)服務(wù)器進(jìn)程等操作。
具體到Goland這樣的Java/Go語(yǔ)言IDE中,控制臺(tái)可能有如下用途:
- 運(yùn)行應(yīng)用程序:可以直接在控制臺(tái)內(nèi)運(yùn)行程序并觀察其標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)。
-
編譯構(gòu)建:通過(guò)命令行調(diào)用編譯器,如
go build
命令來(lái)編譯Go語(yǔ)言項(xiàng)目,或者使用Maven、Gradle等構(gòu)建工具。 - 測(cè)試執(zhí)行:運(yùn)行自動(dòng)化測(cè)試,并顯示測(cè)試結(jié)果。
- 調(diào)試支持:提供調(diào)試控制臺(tái),可以在此設(shè)置斷點(diǎn)、單步執(zhí)行、查看變量值等。
- 版本控制操作:雖然不是必須,但一些IDE的控制臺(tái)可能會(huì)集成Git或其他版本控制系統(tǒng)命令,使得用戶能夠在控制臺(tái)窗口內(nèi)執(zhí)行版本控制相關(guān)的操作。
- 數(shù)據(jù)庫(kù)操作:某些IDE的控制臺(tái)還可以用于執(zhí)行SQL查詢和其他數(shù)據(jù)庫(kù)管理任務(wù)。
總之,在軟件開(kāi)發(fā)過(guò)程中,IDE內(nèi)的控制臺(tái)極大地方便了開(kāi)發(fā)人員快速執(zhí)行和監(jiān)控各種命令行任務(wù),增強(qiáng)了工作效率,減少了切換不同窗口和工具的需要。
二、格式化輸入與輸出
Go 語(yǔ)言中的 fmt
包提供了格式化輸入(掃描,如 Scan
, Scanf
, Scanln
)和輸出(打印,如 Print
, Printf
, Println
, Sprintf
, Fprint
, 等)的功能。這里主要講解其輸出功能的詳細(xì)應(yīng)用示例:
-
基本輸出函數(shù):
-
fmt.Print
: 打印所有參數(shù),并在它們之間自動(dòng)添加空格。package main import "fmt" func main() { fmt.Print("Hello, ", "World!") }
-
fmt.Println
: 類似于Print
,但在所有參數(shù)之后會(huì)追加一個(gè)換行符。fmt.Println("Hello, World!")
-
-
格式化輸出函數(shù):
-
fmt.Printf
: 格式化并打印變量,接受一個(gè)格式字符串和任意數(shù)量的參數(shù)。fmt.Printf("My name is %s and I am %d years old.\n", "Alice", 30)
這里
%s
是用于字符串的占位符,%d
是用于整數(shù)的占位符。
-
-
更復(fù)雜的格式化選項(xiàng):
-
使用標(biāo)志(flag)來(lái)改變輸出樣式,例如左對(duì)齊
-
、填充0
、寬度.width
等。fmt.Printf("|%6s|%6d|\n", "Name", 123) // 默認(rèn)右對(duì)齊,總寬度為6 fmt.Printf("|%-6s|%-6d|\n", "Name", 123) // 左對(duì)齊 fmt.Printf("|%06s|%06d|\n", "Name", 123) // 用0填充空白
-
輸出類型標(biāo)識(shí)符:
-
%v
:值的默認(rèn)表示形式(根據(jù)類型不同而變化) -
%#v
:值的 Go 語(yǔ)法表示 -
%T
:值的類型的 Go 語(yǔ)法表示 -
%t
:布爾型 -
%d
,%i
:十進(jìn)制整數(shù) -
%x
,%X
:十六進(jìn)制整數(shù) -
%e
,%E
:科學(xué)記數(shù)法浮點(diǎn)數(shù) -
%f
:浮點(diǎn)數(shù) -
%g
或%G
:根據(jù)情況選擇%e
或%f
-
%%
:輸出百分號(hào)%
自身
-
-
-
其他輸出函數(shù):
-
fmt.Sprintf
:將格式化的字符串寫入到新的字符串變量中,而不是直接輸出到控制臺(tái)。greeting := fmt.Sprintf("Hello, %s!", "Bob") fmt.Println(greeting) // 輸出:Hello, Bob!
-
fmt.Fprint
和相關(guān)函數(shù):這些函數(shù)可以將格式化內(nèi)容寫入到任意實(shí)現(xiàn)了 io.Writer 接口的對(duì)象,比如 os.File 或 bufio.Writer。file, _ := os.Create("output.txt") defer file.Close() fmt.Fprintf(file, "Writing to a file: %s\n", "This is a test.")
-
以上僅為部分示例,fmt
包提供的功能非常豐富,實(shí)際使用時(shí)可以根據(jù)需求進(jìn)行組合和擴(kuò)展。
三、練習(xí)
以下是一個(gè)綜合性的示例,展示了如何使用 fmt
包進(jìn)行格式化輸出,包括不同類型的數(shù)據(jù)和更復(fù)雜的格式控制:
package main
import (
"fmt"
"time"
)
type Person struct {
Name string
Age int
}
func main() {
// 基本類型輸出
fmt.Println("Simple output:")
fmt.Println("Hello, World!")
fmt.Println(123)
fmt.Println(123.456)
// 格式化輸出
fmt.Println("\nFormatted output:")
person := Person{Name: "Alice", Age: 30}
now := time.Now()
// 使用占位符 %s, %d 和 %.2f 分別對(duì)應(yīng)字符串、整數(shù)和保留兩位小數(shù)的浮點(diǎn)數(shù)
fmt.Printf("Person: Name = %s, Age = %d\n", person.Name, person.Age)
fmt.Printf("Current time: %v\n", now) // 對(duì)于time.Time類型,%v會(huì)輸出可讀的時(shí)間格式
// 使用寬度和填充
fmt.Printf("|%-10s|%-10d|\n", "Name", 123) // 左對(duì)齊,總寬度為10
fmt.Printf("|%10s|%10d|\n", "Name", 123) // 右對(duì)齊,總寬度為10,用空格填充
fmt.Printf("|%010s|%010d|\n", "Name", 123) // 右對(duì)齊,總寬度為10,用0填充
// 使用 %+v 輸出結(jié)構(gòu)體時(shí)會(huì)包含字段名
fmt.Printf("\nThe Person struct using %+v:\n%+v\n", person, person)
// 復(fù)雜的格式化示例,輸出布爾值、指針以及 Go 語(yǔ)法表示的類型和值
boolValue := true
intPtr := new(int)
*intPtr = 42
fmt.Printf("\nOther types and flags:\n%t, %#v, %p, %T\n", boolValue, intPtr, intPtr, intPtr)
}
運(yùn)行此程序?qū)⒖吹礁鞣N類型的變量以不同方式格式化輸出的結(jié)果。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-830820.html
小結(jié)
控制臺(tái)輸入與輸出在實(shí)際開(kāi)發(fā)中較少用到。但在初階段可以用來(lái)測(cè)試所編寫的代碼產(chǎn)生的結(jié)果。此外,格式化輸出在實(shí)際編程中要經(jīng)常用到,本節(jié)內(nèi)容應(yīng)多加練習(xí)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-830820.html
到了這里,關(guān)于編程筆記 Golang基礎(chǔ) 011 控制臺(tái)輸入與輸出的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!