【GoLang入门教程】Go语言几种标准库介绍(四)

编程语言的未来?

文章目录

    • 编程语言的未来?
      • 前言
      • 几种库
        • fmt库 (格式化操作)
          • 关键函数:
          • 示例
        • Go库
          • 标准库
          • 第三方库
          • 示例
        • html库(HTML 转义及模板系统)
          • 主要功能:
          • 示例
      • 总结
      • 专栏集锦
      • 写在最后

579a429daf314744b995f37351b46548

前言

上一篇,我们介绍了debug、encoding、flag三个库,这篇我们继续介绍剩下的库


几种库

fmt库 (格式化操作)

在 Go 语言的标准库中,fmt 包提供了格式化输入输出的功能。

这个包包括了一系列函数,用于将数据格式化为字符串(fmt.Sprintf)、输出到控制台(fmt.Printfmt.Printlnfmt.Printf)以及读取输入数据(fmt.Scanfmt.Scanffmt.Scanln)等。

关键函数:
  1. PrintPrintlnPrintf 用于将格式化的文本输出到标准输出。Println 会在输出的文本末尾添加换行符。
  2. ScanScanlnScanf 用于从标准输入读取数据。Scanln 会在读取后换行。
  3. SprintSprintlnSprintf 用于将数据格式化为字符串而不输出。
  4. FprintFprintlnFprintf 用于将格式化的文本输出到指定的 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)
}

在这个示例中,使用了 PrintlnPrintfSprintfScan 等函数。

通过这些函数,可以方便地进行输出和输入的格式化操作。

注意,在使用 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 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 构建了一个简单的 HTTP 服务,该服务在根路径 (“/”) 下响应一个 JSON 消息。

html库(HTML 转义及模板系统)

在 Go 语言的标准库中,html 包实际上并不存在。

然而,Go 标准库提供了 html/template 包,用于 HTML 模板的解析和渲染。

这个包允许创建动态的 HTML 内容,通过填充数据生成最终的 HTML 页面。

主要功能:
  1. HTML 模板定义: 允许在 HTML 中嵌入 Go 代码,并使用 {{...}} 语法定义模板变量和控制结构。
  2. 模板执行: 提供了 ExecuteExecuteTemplate 方法,用于将模板应用于数据并生成最终的 HTML。
  3. 模板函数: 支持自定义的模板函数,以便在模板中执行自定义的操作。
示例

如何使用 html/template 包创建和执行 HTML 模板:

package mainimport ("html/template""os"
)// 数据结构
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>
`// 创建模板对象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等系列文章,一系列干货随时送达!

csdn-end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/328006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于“Python”的核心知识点整理大全65

目录 20.2.19 设置 SECRET_KEY 20.2.20 将项目从 Heroku 删除 注意 20.3 小结 附录 A 安装Python A.1.1 确定已安装的版本 A.1.2 在 Linux 系统中安装 Python 3 A.2 在 OS X 系统中安装 Python A.2.1 确定已安装的版本 A.2.2 使用 Homebrew 来安装 Python 3 注意 …

基于商品列表的拖拽排序后端实现

目录 一&#xff1a;实现思路 二&#xff1a;实现步骤 二&#xff1a;实现代码 三&#xff1a;注意点 一&#xff1a;实现思路 后台实现拖拽排序通常需要与前端进行配合&#xff0c;对商品的列表拖拽排序&#xff0c;前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…

Matlab三维绘图

绘制三维图plot3 t0:pi/50:10*pi; xsin(t); ycos(t); zt; plot3(x,y,z); 产生栅格数据点meshgrid 这个接口在绘制三维图像里面相当重要&#xff0c;很多时候要将向量变成矩阵才能绘制三维图。 x0:0.5:5; y0:1:10; [X,Y]meshgrid(x,y); plot(X,Y,o); x和y是向量&#xff0c;…

RocketMQ单机部署完整学习笔记

文章目录 前言一、RocketMQ是什么&#xff1f;二、使用步骤1.安装MQ1.安装JDK2.安装mq3.MQ配置(核心) 2.搭建可视化dashboard1.下载源码2.修改配置3.启动 3.整合java1.生产者2.消费者3.启动生产者4.启动消费者5.dashboard添加消费组 三、总结全部的配置 前言 本文是基于4.X版本…

LeetCode 2221. 数组的三角和

文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;其中 nums[i] 是 0 到 9 之间&#xff08;两者都包含&#xff09;的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值&#xff1a; num…

I.MX6ULL开发笔记(二)——硬件外设操作

0x01 点亮第一个RGB灯 在文章http://t.csdnimg.cn/EGWt9中有介绍Linux下文件目录&#xff0c;那么在Linux系统下&#xff0c;RGB灯也是一个设备&#xff0c;所以我们需要到/sys目录下去操作这个设备。 之后&#xff0c;我们进入到class目录&#xff0c;这里挂载着开发板上的外…

Mongodb删除操作中字符序对结果的影响

本文还是要从删除操作的语法说起。 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中&#xff0c;可以指定数据写入策略&#xff0c;字符序和使用的索引字段。 字符序&a…

MySQL第四战:视图以及常见面试题(上)

目录 目录&#xff1a; 一.视图 1.介绍什么是视图 2.视图的语法 语法讲解 实例操作 二.MySQL面试题 1.SQL脚本 2.面试题实战 三.思维导图 目录&#xff1a; 随着数字化时代的飞速发展&#xff0c;数据库技术&#xff0c;特别是MySQL&#xff0c;已经成为IT领域中不可…

Mybatis简易搭建并查询数据库表内所有数据

搭建步骤 1.在mysql中创建user表&#xff0c;添加数据2.创建maven模块&#xff0c;导入坐标3.在资源文件夹中导入需要用到的logback.xml4.编写MyBatis 核心配置文件->替换连接信息 解决硬编码问题5.编写 SQL映射文件->统一管理sgl语句&#xff0c;解决硬编码问题6.编码定…

HackTheBox - Medium - Linux - Ambassador

Ambassador Ambassador 是一台中等难度的 Linux 机器&#xff0c;用于解决硬编码的明文凭据留在旧版本代码中的问题。首先&#xff0c;“Grafana”CVE &#xff08;“CVE-2021-43798”&#xff09; 用于读取目标上的任意文件。在研究了服务的常见配置方式后&#xff0c;将在其…

【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙

【简介】飞塔防火墙上都会配有CONSOLE接口&#xff0c;包装里都会配置一根USB配置线&#xff0c;通过这个接口和这根线&#xff0c;我们可以用命令的方式登录飞塔防火墙。随着苹果电脑的普及&#xff0c;我们来学习如何在macOS中使用USB配置线登录飞塔防火墙。 早期飞塔防火墙包…

useContext

可以跨组件传值 其实主要的就是三步 1、const xxx React.createContext();创建一个context 2、<xxx.Provider value{{ num, setNum }}>父组件设置要传递的值 3、const { num, setNum } React.useContext(xxx);子组件下使用 特点&#xff1a; 1、可以有多个xxx.Pr…