網(wǎng)站開發(fā)中網(wǎng)頁上傳今天的新聞發(fā)布會
編程語言的未來?
文章目錄
- 編程語言的未來?
- 前言
- 幾種庫
- fmt庫 (格式化操作)
- 關(guān)鍵函數(shù):
- 示例
- Go庫
- 標準庫
- 第三方庫
- 示例
- html庫(HTML 轉(zhuǎn)義及模板系統(tǒng))
- 主要功能:
- 示例
- 總結(jié)
- 專欄集錦
- 寫在最后

前言
上一篇,我們介紹了debug、encoding、flag三個庫,這篇我們繼續(xù)介紹剩下的庫
幾種庫
fmt庫 (格式化操作)
在 Go 語言的標準庫中,fmt
包提供了格式化輸入輸出的功能。
這個包包括了一系列函數(shù),用于將數(shù)據(jù)格式化為字符串(fmt.Sprintf
)、輸出到控制臺(fmt.Print
、fmt.Println
、fmt.Printf
)以及讀取輸入數(shù)據(jù)(fmt.Scan
、fmt.Scanf
、fmt.Scanln
)等。
關(guān)鍵函數(shù):
Print
、Println
、Printf
: 用于將格式化的文本輸出到標準輸出。Println
會在輸出的文本末尾添加換行符。Scan
、Scanln
、Scanf
: 用于從標準輸入讀取數(shù)據(jù)。Scanln
會在讀取后換行。Sprint
、Sprintln
、Sprintf
: 用于將數(shù)據(jù)格式化為字符串而不輸出。Fprint
、Fprintln
、Fprintf
: 用于將格式化的文本輸出到指定的io.Writer
。
示例
package mainimport "fmt"func main() {// Println示例fmt.Println("Hello, Golang!")// Printf示例name := "Alice"age := 25fmt.Printf("Name: %s, Age: %d\n", name, age)// Sprintf示例formattedString := fmt.Sprintf("Name: %s, Age: %d", name, age)fmt.Println(formattedString)// Scan示例var inputName stringvar inputAge intfmt.Print("Enter your name: ")fmt.Scan(&inputName)fmt.Print("Enter your age: ")fmt.Scan(&inputAge)fmt.Printf("You entered: Name: %s, Age: %d\n", inputName, inputAge)
}
在這個示例中,使用了 Println
、Printf
、Sprintf
、Scan
等函數(shù)。
通過這些函數(shù),可以方便地進行輸出和輸入的格式化操作。
注意,在使用 Scan
函數(shù)時,需要使用取地址符&
來獲取輸入的值的地址。
Go庫
在 Go 語言中,術(shù)語 “Go庫” 通常是指標準庫(Standard Library)和第三方庫(Third-party Libraries)。
標準庫
Go 語言的標準庫是與語言一起發(fā)布的一組包,提供了廣泛的功能,包括輸入輸出、網(wǎng)絡(luò)、加密、并發(fā)等。這些包是通過 import
語句引入的,無需額外安裝。
以下是一些標準庫的子包以及其主要功能:
-
fmt
: 格式化輸入輸出。 -
net
: 網(wǎng)絡(luò)編程,包括 TCP、UDP、HTTP 等。 -
http
: HTTP 協(xié)議的實現(xiàn),用于構(gòu)建 Web 應(yīng)用程序。 -
os
: 操作系統(tǒng)相關(guān)的功能,例如文件操作、環(huán)境變量等。 -
io
: 輸入輸出抽象。 -
crypto
: 加密和哈希算法。 -
time
: 處理時間和日期。 -
sync
: 并發(fā)編程的同步工具。 -
database/sql
: 數(shù)據(jù)庫操作。
第三方庫
除了標準庫之外,Go 社區(qū)還擁有豐富的第三方庫,可通過工具如 go get
來獲取和安裝。這些庫涵蓋了各種領(lǐng)域,包括 Web 框架、數(shù)據(jù)庫驅(qū)動、圖形界面等。
以下是一些流行的第三方庫:
gin
: Web 框架,用于構(gòu)建高性能的 Web 應(yīng)用程序。gorm
: ORM(對象關(guān)系映射)庫,用于數(shù)據(jù)庫操作。viper
: 配置管理庫,用于處理應(yīng)用程序配置。cobra
: 命令行應(yīng)用程序的庫,用于創(chuàng)建命令行工具。govalidator
: 輸入驗證庫,用于驗證用戶輸入的數(shù)據(jù)。
示例
使用標準庫的 fmt
包以及第三方庫的 gin
包:
package mainimport ("fmt""github.com/gin-gonic/gin"
)func main() {// 標準庫示例fmt.Println("Hello, Go Standard Library!")// 第三方庫示例(使用 gin 框架)router := gin.Default()router.GET("/", func(c *gin.Context) {c.JSON(200, gin.H{"message": "Hello, Gin!",})})router.Run(":8080")
}
在這個示例中,首先使用標準庫的 fmt
包輸出一條簡單的消息。
然后,使用第三方庫 gin
構(gòu)建了一個簡單的 HTTP 服務(wù),該服務(wù)在根路徑 (“/”) 下響應(yīng)一個 JSON 消息。
html庫(HTML 轉(zhuǎn)義及模板系統(tǒng))
在 Go 語言的標準庫中,html
包實際上并不存在。
然而,Go 標準庫提供了 html/template
包,用于 HTML 模板的解析和渲染。
這個包允許創(chuàng)建動態(tài)的 HTML 內(nèi)容,通過填充數(shù)據(jù)生成最終的 HTML 頁面。
主要功能:
- HTML 模板定義: 允許在 HTML 中嵌入 Go 代碼,并使用
{{...}}
語法定義模板變量和控制結(jié)構(gòu)。 - 模板執(zhí)行: 提供了
Execute
和ExecuteTemplate
方法,用于將模板應(yīng)用于數(shù)據(jù)并生成最終的 HTML。 - 模板函數(shù): 支持自定義的模板函數(shù),以便在模板中執(zhí)行自定義的操作。
示例
如何使用 html/template
包創(chuàng)建和執(zhí)行 HTML 模板:
package mainimport ("html/template""os"
)// 數(shù)據(jù)結(jié)構(gòu)
type Person struct {Name stringAge intCity string
}func main() {// HTML 模板定義htmlTemplate := `
<!DOCTYPE html>
<html>
<head><title>{{.Name}}'s Profile</title>
</head>
<body><h1>{{.Name}}'s Profile</h1><p>Age: {{.Age}}</p><p>City: {{.City}}</p>
</body>
</html>
`// 創(chuàng)建模板對象tmpl, err := template.New("profile").Parse(htmlTemplate)if err != nil {panic(err)}// 數(shù)據(jù)personData := Person{Name: "Alice",Age: 30,City: "Wonderland",}// 執(zhí)行模板并輸出到標準輸出err = tmpl.Execute(os.Stdout, personData)if err != nil {panic(err)}
}
在這個示例中,定義了一個簡單的 HTML 模板,并使用 template.New("profile").Parse
創(chuàng)建了一個模板對象。
然后,創(chuàng)建了一個 Person
結(jié)構(gòu)體的實例作為數(shù)據(jù),最后使用 tmpl.Execute
將數(shù)據(jù)應(yīng)用于模板并輸出到標準輸出。
總結(jié)
這里我們介紹了3個庫fmt、Go、html 3個庫, 下一篇我們將介紹其他的幾種標準庫
專欄集錦
大佬們可以收藏以備不時之需:
Spring Boot 專欄:http://t.csdnimg.cn/peKde
ChatGPT 專欄:http://t.csdnimg.cn/cU0na
Java 專欄:http://t.csdnimg.cn/YUz5e
Go 專欄:http://t.csdnimg.cn/Jfryo
Netty 專欄:http://t.csdnimg.cn/0Mp1H
Redis 專欄:http://t.csdnimg.cn/JuTue
Mysql 專欄:http://t.csdnimg.cn/p1zU9
架構(gòu)之路 專欄:http://t.csdnimg.cn/bXAPS
寫在最后
感謝您的支持和鼓勵! 😊🙏
如果大家對相關(guān)文章感興趣,可以關(guān)注公眾號"架構(gòu)殿堂",會持續(xù)更新AIGC,java基礎(chǔ)面試題, netty, spring boot, spring cloud等系列文章,一系列干貨隨時送達!