上一篇,我们介绍了debug、encoding、flag三个库,这篇我们继续介绍剩下的库
在 Go 语言的标准库中,fmt
包提供了格式化输入输出的功能。
这个包包括了一系列函数,用于将数据格式化为字符串(fmt.Sprintf
)、输出到控制台(fmt.Print
、fmt.Println
、fmt.Printf
)以及读取输入数据(fmt.Scan
、fmt.Scanf
、fmt.Scanln
)等。
Print
、Println
、Printf
: 用于将格式化的文本输出到标准输出。Println
会在输出的文本末尾添加换行符。Scan
、Scanln
、Scanf
: 用于从标准输入读取数据。Scanln
会在读取后换行。Sprint
、Sprintln
、Sprintf
: 用于将数据格式化为字符串而不输出。Fprint
、Fprintln
、Fprintf
: 用于将格式化的文本输出到指定的 io.Writer
。package main
import "fmt"
func main() {
// Println示例
fmt.Println("Hello, Golang!")
// Printf示例
name := "Alice"
age := 25
fmt.Printf("Name: %s, Age: %d\n", name, age)
// Sprintf示例
formattedString := fmt.Sprintf("Name: %s, Age: %d", name, age)
fmt.Println(formattedString)
// Scan示例
var inputName string
var inputAge int
fmt.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
等函数。
通过这些函数,可以方便地进行输出和输入的格式化操作。
注意,在使用 Scan
函数时,需要使用取地址符&
来获取输入的值的地址。
在 Go 语言中,术语 “Go库” 通常是指标准库(Standard Library)和第三方库(Third-party Libraries)。
Go 语言的标准库是与语言一起发布的一组包,提供了广泛的功能,包括输入输出、网络、加密、并发等。这些包是通过 import
语句引入的,无需额外安装。
以下是一些标准库的子包以及其主要功能:
fmt
: 格式化输入输出。
net
: 网络编程,包括 TCP、UDP、HTTP 等。
http
: HTTP 协议的实现,用于构建 Web 应用程序。
os
: 操作系统相关的功能,例如文件操作、环境变量等。
io
: 输入输出抽象。
crypto
: 加密和哈希算法。
time
: 处理时间和日期。
sync
: 并发编程的同步工具。
database/sql
: 数据库操作。
除了标准库之外,Go 社区还拥有丰富的第三方库,可通过工具如 go get
来获取和安装。这些库涵盖了各种领域,包括 Web 框架、数据库驱动、图形界面等。
以下是一些流行的第三方库:
gin
: Web 框架,用于构建高性能的 Web 应用程序。gorm
: ORM(对象关系映射)库,用于数据库操作。viper
: 配置管理库,用于处理应用程序配置。cobra
: 命令行应用程序的库,用于创建命令行工具。govalidator
: 输入验证库,用于验证用户输入的数据。使用标准库的 fmt
包以及第三方库的 gin
包:
package main
import (
"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
构建了一个简单的 HTTP 服务,该服务在根路径 (“/”) 下响应一个 JSON 消息。
在 Go 语言的标准库中,html
包实际上并不存在。
然而,Go 标准库提供了 html/template
包,用于 HTML 模板的解析和渲染。
这个包允许创建动态的 HTML 内容,通过填充数据生成最终的 HTML 页面。
{{...}}
语法定义模板变量和控制结构。Execute
和 ExecuteTemplate
方法,用于将模板应用于数据并生成最终的 HTML。如何使用 html/template
包创建和执行 HTML 模板:
package main
import (
"html/template"
"os"
)
// 数据结构
type Person struct {
Name string
Age int
City 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>
`
// 创建模板对象
tmpl, err := template.New("profile").Parse(htmlTemplate)
if err != nil {
panic(err)
}
// 数据
personData := Person{
Name: "Alice",
Age: 30,
City: "Wonderland",
}
// 执行模板并输出到标准输出
err = tmpl.Execute(os.Stdout, personData)
if err != nil {
panic(err)
}
}
在这个示例中,定义了一个简单的 HTML 模板,并使用 template.New("profile").Parse
创建了一个模板对象。
然后,创建了一个 Person
结构体的实例作为数据,最后使用 tmpl.Execute
将数据应用于模板并输出到标准输出。
这里我们介绍了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
架构之路 专栏:http://t.csdnimg.cn/bXAPS
感谢您的支持和鼓励! 😊🙏
如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!