【GoLang入门教程】Go语言几种标准库介绍(四)
后台-插件-广告管理-内容页头部广告(手机) |
编程语言的未来?
文章目录
- 编程语言的未来?
- 前言
- 几种库
- fmt库 (格式化操作)
- 关键函数:
- 示例
- Go库
- 标准库
- 第三方库
- 示例
- html库(HTML 转义及模板系统)
- 主要功能:
- 示例
- 总结
- 专栏集锦
- 写在最后
前言
上一篇,我们介绍了debug、encoding、flag三个库,这篇我们继续介绍剩下的库
几种库
fmt库 (格式化操作)
在 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) }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
在这个示例中,使用了 Println、Printf、Sprintf、Scan 等函数。
通过这些函数,可以方便地进行输出和输入的格式化操作。
注意,在使用 Scan 函数时,需要使用取地址符&来获取输入的值的地址。
Go库
在 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") }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
在这个示例中,首先使用标准库的 fmt 包输出一条简单的消息。
然后,使用第三方库 gin 构建了一个简单的 HTTP 服务,该服务在根路径 (“/”) 下响应一个 JSON 消息。
html库(HTML 转义及模板系统)
在 Go 语言的标准库中,html 包实际上并不存在。
然而,Go 标准库提供了 html/template 包,用于 HTML 模板的解析和渲染。
这个包允许创建动态的 HTML 内容,通过填充数据生成最终的 HTML 页面。
主要功能:
- HTML 模板定义: 允许在 HTML 中嵌入 Go 代码,并使用 {{...}} 语法定义模板变量和控制结构。
- 模板执行: 提供了 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 := `{{.Name}}'s Profile
Age: {{.Age}}
City: {{.City}}
` // 创建模板对象 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) } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
在这个示例中,定义了一个简单的 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
写在最后
感谢您的支持和鼓励!
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |