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

news2024/9/21 16:18:12

编程语言的未来?

文章目录

    • 编程语言的未来?
      • 前言
      • 几种库
        • 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 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)
}


在这个示例中,使用了 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 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 消息。

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

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

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

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

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

如何使用 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等系列文章,一系列干货随时送达!

csdn-end

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++动态内存分配 malloc、new、vector(简单讲述)

路虽远&#xff0c;行则将至 事虽难&#xff0c;做则必成 今天来主要讲C中动态内存分配 其中会穿插一些C的内容以及两者的比较 如果对C语言中的动态内存分配还不够理解的同学 可以看看我之前的博客:C语言动态分配 在讲解C的动态内存分配之前 我们先讲一下C内存模型 &#xff1…

国家信息安全水平等级考试NISP二级题目卷③(包含答案)

国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09; 国家信息安全水平等级考试NISP二级题目卷&#xff08;三&#xff09;需要报考咨询可以私信博主&#xff01; 前言&#xff1a; 国家信息安全水平考试(NISP)二级&#xff0c;被称为校园版”CISP”,由中国信息…

全解析阿里云Alibaba Cloud Linux镜像操作系统

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

78 Python开发-多线程FuzzWaf异或免杀爆破

这里写目录标题 本课知识点:学习目的:演示案例:Python开发-简单多线程技术实现脚本Python开发-利用FTP模块实现协议爆破脚本Python开发-配合Fuzz实现免杀异或Shell脚本 涉及资源: 本课知识点: 协议模块使用&#xff0c;Request爬虫技术&#xff0c;简易多线程技术&#xff0c;…

Postman 安装及使用

文章目录 1. 安装 Postman1&#xff09;下载2&#xff09;安装3&#xff09;注册用户4&#xff09;登陆完成 2. 创建和发送请求1&#xff09;发送一个 GET 请求2&#xff09;发送一个 POST 请求 3. 查看响应4. 使用环境变量和变量5. 高级功能和测试6. 导出和分享请求总结 Postm…

IDS 和 IPS:了解异同

IDS 和 IPS 是至关重要的网络安全技术&#xff0c;经常被混淆或互换使用。那么&#xff0c;IDS 和 IPS 之间有什么区别&#xff0c;哪一种是最适合您组织需求的选择呢&#xff1f; 什么是IDS&#xff08;入侵检测系统&#xff09;&#xff1f; 入侵检测系统 (IDS) 是一种网络…

git在本地创建dev分支并和远程的dev分支关联起来

文章目录 git在本地创建dev分支并和远程的dev分支关联起来1. 使用git命令2. 使用idea2.1 先删除上面建的本地分支dev2.2 通过idea建dev分支并和远程dev分支关联 3. 查看本地分支和远程分支的关系 git在本地创建dev分支并和远程的dev分支关联起来 1. 使用git命令 git checkout…

华芯微特|MCU之TIMER输入捕获

引言 华芯微特公司SWM系列单片机提供的TIMER个数和功能有些微差别&#xff0c;为了让您更加简单的使用这一功能&#xff0c;下面小编将以SWM190为例&#xff0c;我们今天详细讲解一下TIMER的输入捕获功能。 TIMER输入捕获 一、TIMER定时器之输入捕获功能 我们今天详细讲解一下…

一篇文章学会Linux

一篇文章学会Linux 声明&#xff1a;以下内容均为我个人的理解&#xff0c;如果发现错误或者疑问可以联系我共同探讨 简介 Linux Linux是一种自由和开放源码的类UNIX操作系统。该操作系统的内核由林纳斯托瓦兹在1991年10月5日首次发布&#xff0c;在加上用户空间的应用程序…

【JUC】Volatile关键字+CPU/JVM底层原理

Volatile关键字 volatile内存语义 1.当写一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中。 2.当读一个volatile变量时&#xff0c;JMM会把该线程对应的本地内存设置为无效&#xff0c;直接从主内存中读取共享变量 所以volatile…

运输层

title: 运输层 date: 2023-12-24 14:17:55 tags: 知识总结 categories: 计算机网络 运输层和网络层的联系和区别 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信&#xff0c;但实际上&#xff0c;在计…

视频监控可视化云平台EasyCVR智能视频技术优势分析

TSINGSEE青犀视频安防视频管理系统EasyCVR视频智能融合共享平台&#xff0c;是一个支持Windows/Linux(CentOS ubuntu)/国产化系统的视频管理平台。平台可以支持多协议接入&#xff0c;通过视频应用引擎将多种格式的视频数据转换为统一的视频流数据&#xff0c;支持无插件H5直播…

RocketMQ单机部署完整学习笔记

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

数据库攻防学习

免责声明 本文仅供学习和研究使用,请勿使用文中的技术用于非法用途,任何人造成的任何负面影响,与本号及作者无关。 Redis 0x01 redis学习 在渗透测试面试或者网络安全面试中可能会常问redis未授权等一些知识&#xff0c;那么什么是redis&#xff1f;redis就是个数据库&#xff…

【UEFI基础】EDK网络框架(通用函数和数据)

通用函数和数据 DPC DPC全称Deferred Procedure Call。Deferred的意思是“延迟”&#xff0c;这个DPC的作用就是注册函数&#xff0c;然后在之后的某个时刻调用&#xff0c;所以确实是有“延迟”的意思。DPC在UEFI的实现中包括两个部分。一部分是库函数DxeDpcLib&#xff0c;…

知识付费平台搭建?找明理信息科技,专业且高效

明理信息科技知识付费saas租户平台 在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和…

【MATLAB第88期】基于MATLAB的6种神经网络(ANN、FFNN、CFNN、RNN、GRNN、PNN)多分类预测模型对比含交叉验证

【MATLAB第88期】基于MATLAB的6种神经网络&#xff08;ANN、FFNN、CFNN、RNN、GRNN、PNN&#xff09;多分类预测模型对比含交叉验证 前言 本文介绍六种类型的神经网络分类预测模型 1.模型选择 前馈神经网络 (FFNN) 人工神经网络 (ANN) 级联前向神经网络 (CFNN) 循环神经网…

QT上位机开发(串口界面设计)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 如果上位机要和嵌入式设备进行打交道的话&#xff0c;那么串口可能就是我们遇到的第一个硬件设备。串口的物理接线很简单&#xff0c;基本上就是收…

前端-relation-graph实现关系数据展示(关系图/流程图)

目录 前言&#xff1a; 1. relation-graph 2. relation-graph数据关系组件---官方地址relation-graph - A Relationship Graph Componenthttps://www.relation-graph.com/ 3. 选择relation-graph的理由 4. 项目中引用relation-graph 4.1 下载命令 4.2 在Vue 2 中使用 4…

CGAL的无限制的Delaunay图

本章描述了构建L∞距离下线段Delaunay图的算法和几何特征。这些特征还包括绘制L∞距离下线段Delaunay图对偶&#xff08;即L∞距离下线段Voronoi图&#xff09;边缘的方法。L∞算法和特征依赖于欧几里得&#xff08;或L2&#xff09;距离下的线段Delaunay图算法和特征。L∞度量…