【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 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
等函数。
通过这些函数,可以方便地进行输出和输入的格式化操作。
注意,在使用 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 页面。
主要功能:
- HTML 模板定义: 允许在 HTML 中嵌入 Go 代码,并使用
{{...}}
语法定义模板变量和控制结构。 - 模板执行: 提供了
Execute
和ExecuteTemplate
方法,用于将模板应用于数据并生成最终的 HTML。 - 模板函数: 支持自定义的模板函数,以便在模板中执行自定义的操作。
示例
如何使用 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等系列文章,一系列干货随时送达!
相关文章:
【GoLang入门教程】Go语言几种标准库介绍(四)
编程语言的未来? 文章目录 编程语言的未来?前言几种库fmt库 (格式化操作)关键函数:示例 Go库标准库第三方库示例 html库(HTML 转义及模板系统)主要功能:示例 总结专栏集锦写在最后 前言 上一篇,我们介绍了debug、enco…...
面试算法:快速排序
题目 快速排序是一种非常高效的算法,从其名字可以看出这种排序算法最大的特点就是快。当表现良好时,快速排序的速度比其他主要对手(如归并排序)快2~3倍。 分析 快速排序的基本思想是分治法,排序过程如下…...
航空业数字化展翅高飞,开源网安专业服务保驾护航
某知名航空公司是中国首批民营航空公司之一,运营国内外航线200多条,也是国内民航最高客座率的航空公司之一。在数字化发展中,该航空公司以数据驱动决策,通过精细化管理、数字创新和模式优化等方式,实现了精准营销和个…...
SpringBoot学习(三)-员工管理系统开发(重在理解)
注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!! 本文是基于狂神老师SpringBoot教程中的员工管理系统从0到1的实践和理解。该系统应用SpringB…...
2 Windows网络编程
1 基础概念 1.1 socket概念 Socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。Socket本质上是一个抽象层,它是一组用于网络通信的API,包括了一系列…...
uniapp选择android非图片文件的方案踩坑记录
这个简单的问题我遇到下面6大坑,原始需求是选择app如android的excel然后读取到页面并上传表格数据json 先看看效果 uniapp 选择app excel文件读取 1.uniapp自带不支持 uniapp选择图片和视频非常方便自带已经支持可以直接上传和读取 但是选择word excel的时候就出现…...
前端发开的性能优化 请求级:请求前(资源预加载和预读取)
预加载 预加载:是优化网页性能的重要技术,其目的就是在页面加载过程中先提前请求和获取相关的资源信息,减少用户的等待时间,提高用户的体验性。预加载的操作可以尝试去解决一些类似于减少首次内容渲染的时间,提升关键资…...
B01、类加载子系统-02
JVM架构图-英文版 中文版见下图: 1、概述类的加载器及类加载过程 1.1、类加载子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engi…...
用PHP搭建一个绘画API
【腾讯云AI绘画】用PHP搭建一个绘画API 大家好!今天我要给大家推荐的是如何用PHP搭建一个绘画API,让你的网站或应用瞬间拥有强大的绘画能力!无论你是想要让用户在网页上绘制自己的创意,还是想要实现自动绘画生成特效,这…...
西安人民检察院 | OLED翻页查询一体机
产品:55寸OLED柔性屏 项目时间:2023年12月 项目地点:西安 在2023年12月,西安人民检察院引入了OLED翻页查询一体机,为来访者提供了一种全新的信息查询方式。 这款一体机采用55寸OLED柔性屏,具有高清晰度、…...
superset利用mysql物化视图解决不同数据授权需要写好几次中文别名的问题
背景 在使用superset时,给不同的人授权不同的数据,需要不同的数据源,可视化字段希望是中文,所以导致不同的人需要都需要去改表的字段,因此引入视图,将视图中字段名称设置为中文 原表数据 select * from …...
输入输出流
1.输入输出流 输入/输出流类:iostream---------i input(输入) o output(输出) stream:流 iostream: istream类:输入流类-------------cin:输入流类的对象 ostream类…...
IOS:Safari无法播放MP4(H.264编码)
一、问题描述 MP4使用H.264编码通常具有良好的兼容性,因为H.264是一种广泛支持的视频编码标准。它可以在许多设备和平台上播放,包括电脑、移动设备和流媒体设备。 使用caniuse查询H.264兼容性,看似确实具有良好的兼容性: 然而…...
Pycharm恢复默认设置
window 系统 找到下方目录-->删除. 再重新打开Pycharm C:\Users\Administrator\.PyCharm2023.3 你的不一定和我名称一样 只要是.PyCharm*因为版本不同后缀可能不一样 mac 系统 请根据需要删除下方目录 # Configuration rm -rf ~/Library/Preferences/PyCharm* # Caches …...
简单计算器实现,包括两个数
正在加载中... 简单计算器实现,包括两个数 ❤ 厾罗 简单计算器实现,包括两个数 以下代码用于实现简单计算器实现,包括两个数基本的加减乘除运算: 实例(Python 3.0) # Filename : test.py # author by : www.dida100.com …...
竞赛保研 基于机器视觉的手势检测和识别算法
0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng…...
Android App从备案到上架全过程
不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改…...
用邮件及时获取变更的公网IP--------python爬虫+打包成exe文件
参考获取PC机公网IP并发送至邮箱 零、找一个发送邮件的邮箱 本文用QQ邮箱为发送邮箱,网易等邮箱一般也有这个功能,代码也是通用的。 第一步:在设置中找到账户,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击获…...
c++学习:函数模板+实战
目录 函数模板 思考 如果两个参数的类型不一样可以下面这么写 如果有指定返回参数可以下面这么写 实战 找出三个数中最大的一个 函数模板 实际上就是建立一个通用函数,其函数返回值类型和形参类型不具体指定,用一个虚拟的类型来代表template 是一个…...
three.js gltf后处理颜色异常(伽马校正)
效果: 应用了伽马校正,好像效果不明显 代码: <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"><…...
面试经典150题(55-58)
leetcode 150道题 计划花两个月时候刷完,今天(第二十四天)完成了4道(55-58)150: 55.(19. 删除链表的倒数第 N 个结点)题目描述: 给你一个链表,删除链表的倒数第 n 个结点ÿ…...
如果一个n位正整数等于其各位数字的n次方之和
❤ 厾罗 如果一个n位正整数等于其各位数字的n次方之和 如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 5^3 3^3 153。 1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。 以下代码用于检测用户输…...
solidity显示以太坊美元价格
看过以太坊白皮书的都知道,以太坊比较比特币而言所提升的地方中,我认为最重要的一点就是能够访问外部的数据,这一点在赌博、金融领域应用会很广泛,但是区块链是一个确定的系统,包括里面的所有数值包括交易ID等都是确定…...
ChatGPT学习笔记——大模型基础理论体系
1、ChatGPT的背景与意义 近期,ChatGPT表现出了非常惊艳的语言理解、生成、知识推理能力, 它可以极好的理解用户意图,真正做到多轮沟通,并且回答内容完整、重点清晰、有概括、有条理。 ChatGPT 是继数据库和搜索引擎之后的全新一代的 “知识表示和调用方式”如下表所示。 …...
Termius for Mac/Win:一款功能强大的终端模拟器、SSH 和 SFTP 客户端软件
随着远程工作和云技术的普及,对于高效安全的远程访问和管理服务器变得至关重要。Termius,一款强大且易用的终端模拟器、SSH 和 SFTP 客户端软件,正是满足这一需求的理想选择。 Termius 提供了一站式的解决方案,允许用户通过单一平…...
python如何读取被压缩的图像
读取压缩的图像数据: PackBits 压缩介绍: CCITT T.3 压缩介绍: 读取压缩的图像数据: 在做图像处理的时候,平时都是使用 函数io.imread() 或者是 函数cv2.imread( ) 函数来读取图像数据,很少用PIL.Image…...
华为OD机试 - 寻找最优的路测线路(Java JS Python C)
题目描述 评估一个网络的信号质量,其中一个做法是将网络划分为栅格,然后对每个栅格的信号质量计算。 路测的时候,希望选择一条信号最好的路线(彼此相连的栅格集合)进行演示。 现给出 R 行 C 列的整数数组 Cov,每个单元格的数值 S 即为该栅格的信号质量(已归一化,无单…...
互联网演进历程:从“全球等待”到“全球智慧”的技术革新与商业变革
文章目录 一、导言二、World Wide Wait (全球等待)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 三、World Wide Web (万维网)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 四、World Wide Wisdom (全球智慧)阶段1. 技术角度2. 用户体验3. 企业收益4. 教育影响 五、…...
计算机组成原理——总线
总线特点 1.1. 分时:分时是指同一时刻只允许有一个部件向总线发送信息,若系统中有多个部件,则它们只能分时地向总线发生信息。 1.2. 共享:共享是指总线上可以挂接多个部件,各个部件之间互相交换的信息都可以通过这组线…...
2023.12.27 关于 Redis 数据类型 List 常用命令
目录 List 类型基本概念 List 类型特点 List 操作命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP RPOP LINDEX LINSERT LREM LTRIM LSET 阻塞版本的命令 阻塞版本 和 非阻塞版本的区别 BLPOP & BRPOP List 类型基本概念 Redis 中的列表(list&am…...
怎么做vip网站/如何用google搜索产品关键词
问题描述: 在 JSP 页面中使用 JSTL 标签库,访问 JSP 页面时抛出了如下异常信息: 问题原因: 因为使用了 JSP 2.0, 但又没有使用 JSTL 标签库的备用版本(RT库) 解决方案: 方案1. 修改web.xml …...
三合一网站建设平台/百度一下首页登录
评分说明:(1)只要认真完成作业(无论对错),即可得到基础分8分,总分为22分;(2)如果总得分超过基础分(8分),则按如下参考答案及评分标准逐项给分,并累加核算本题总得分。参考答案及评分标准:(1)R1的路由表&…...
做网站需要什么电脑/东莞网站推广的公司
在 做项目中用到了分页,下面说一下oracle分页的方法;采用伪列 rownum查询前10条记录sql;">[sql]select * from t_user t where ROWNUM <10;按照学生ID排名,抓取前三条记录(大于1的数值)、>(大于或等于1的数值)、(大于或等于1的数值),否则无…...
公司网站选择什么空间/温州seo结算
以下情况会出现表单重复提交 用户提交表单,提交完成后,使用功能键F5,会出现重复提交用户在提交表单时,出现网络延迟的问题,而用户以为是卡了,多次点击提交按钮,导致表单重复提交用户提交完表单…...
一个网站做局打水/bt种子搜索
一、MeanAbsoluteError类 tf.keras.losses.MeanAbsoluteError(reduction=losses_utils.ReductionV2.AUTO, name=mean_absolute_error )下面举几个例子 mae = tf.keras.losses.MeanAbsoluteError()...
安徽网站建设详细策划/深圳市推广网站的公司
1、无效的月份问题最近在往数据库中插入时间时,Oracle报“无效的月份问题”,具体SQL如下:INSERT INTO TS_COUNT (ID,CNAME, STARTTIME, ENDTIME,VALUE) VALUES (1, John, 01/06/2013, 02/06/2013, 800);报错:ORA-01843…...