![](https://img-blog.csdnimg.cn/20190927173738199.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Go标准库学习
介绍标准库的使用
random_w
这个作者很懒,什么都没留下…
展开
-
Go语言标准库学习之archive/zip——Go语言自带的文件压缩利器
在 Go 语言标准库中提供了 archive/zip 包用来进行文件的压缩和解压缩,正好最近工作中用到了这个库,在这里向大家介绍 zip 库的使用方法,希望对你有帮助。1. 主要方法介绍FileHeader 对象描述了 zip 文件中的一个文件信息,相关方法如下:FileInfoHeader// FileInfoHeader返回一个根据fi填写了部分字段的Header。// 因为os.FileInfo接口的Name方法只返回它描述的文件的无路径名,有可能需要将返回值的Name字段修改为文件.原创 2020-09-30 18:19:36 · 4308 阅读 · 0 评论 -
Go语言标准库学习之reflect——Go语言中如何通过反射获取interface{}类型数据的值、类型以及方法调用
在Go语言中我们常常会用到接口类型来编写万能程序,函数接收到参数后,我们需要分析出参数类型,这就需要用到类型反射了,这篇文章向大家介绍Go语言标准库 reflect 的使用,希望对你有帮助。一、interface和反射1. Go语言中类型设计原则学习反射前,我们先了解一下Golang关于类型设计的一些原则:变量包括(type,value)两部分。type包括static type和concrete type,简单来说static type是在编码看得见的类型(int、string、float.原创 2020-09-02 14:10:11 · 7897 阅读 · 0 评论 -
Go语言标准库学习之container——Go语言如何实现单链表、循环链表、双向链表、堆
在 Go 语言中我们可以直接使用 container 标准库完成链表和堆操作,非常方便,我们不需要自己去实现这些方法,本文向大家介绍 container 库的使用方法,希望对你有帮助。一、双向链表1. ElementElement 中保存了链表的所有信息,我们来看一下源码:type Element struct { // 双链接元素列表中的下一个和上一个指针。 next, prev *Element // 此元素所属的链表。 list *List // value 中保存了链表的值 .原创 2020-08-19 11:42:22 · 366 阅读 · 0 评论 -
Go语言标准库学习之database/sql——数据库管理的利器
在Go语言标准库中提供了进行数据库操作的 database/sql 库,需要注意的是在使用 sql 库的时候需要导入数据库驱动。本文记录了 database/sql 标准库的学习笔记,希望对你有帮助。1. 数据库连接链接数据库只需要四步即可:#mermaid-svg-bDLD3V9aDVQFpofO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;c.原创 2020-08-14 15:20:59 · 797 阅读 · 0 评论 -
Go语言标准库学习之strings——字符串格式化的利器
在 GO 语言中,我们可以使用 strings 标准库对字符串进行一系列操作,strings 标准库在日常的编程过程中是十分常用的,这里向大家介绍strings标准库的使用,希望对你有帮助。一、字符串切割1. 字符串前后端字符清理// 返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。func Trim(s string, cutset string) string// 返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。func TrimSpace(.原创 2020-08-03 17:14:13 · 833 阅读 · 0 评论 -
Go语言标准库学习之net——有趣的网络编程
在go语言标准库中,net包提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket。本文向大家介绍net标准库的使用,希望对你有帮助。一、 服务端1. 解析地址在TCP服务端我们需要监听一个TCP地址,因此建立服务端前我们需要生成一个正确的TCP地址,这就需要用到下面的函数了。// ResolveTCPAddr函数会输出一个TCP连接地址和一个错误信息func ResolveTCPAddr(network, address string) (*TCPAddr.原创 2020-08-03 15:53:19 · 3529 阅读 · 0 评论 -
Go语言标准库学习之sync二(通过sync.Pool大幅度提升程序运行性能)
sync.pool对象在并发比较高的系统中是非常常见的,这篇博客向大家介绍sync包创建可复用的实例池的原理以及使用方法,希望对你有帮助。1. 池的内部工作流程我们调用sync.pool包中的方法的时候,init函数会自动注册一个清理pool对象的方法,该方法会在GC执行前被调用,所以Pool会在调用GC的时候性能较低(初始化的对象都被清理了,重新创建就会产生开销)。Pool只在两次GC之间是有效的,下面是官方的一张图,用来理解池的管理方式:对于我们创建的每个 sync.Pool,go 生成一.原创 2020-07-30 11:18:10 · 520 阅读 · 1 评论 -
Go语言标准库学习之os/signal——使用Go语言管理信号
os/signal包实现了对输入信号的访问。这个包只有两个重要方法,这里向大家介绍一下,希望对你有帮助。1. 信号的转发Notify函数让signal包将输入信号转发到c。如果没有列出要传递的信号,会将所有输入信号传递到c;否则只传递列出的输入信号。signal包不会为了向c发送信息而阻塞(就是说如果发送时c阻塞了,signal包会直接放弃):调用者应该保证c有足够的缓存空间可以跟上期望的信号频率。对使用单一信号用于通知的通道,缓存为1就足够了。可以使用同一通道多次调用Notify:每一次都会.原创 2020-07-21 11:11:14 · 2049 阅读 · 2 评论 -
Go语言标准库学习之encoding/gob——Go语言Gob流的管理
gob包是用来管理gob流的,它可以实现在编码器(发送器)和解码器(接收器)之间进行二进制数据流的发送,一般用来传递远端程序调用的参数和结果,比如net/rpc包就有用到这个。下面我们来学习以下gob标准库的使用,希望对你有帮助。一、主要函数介绍gob和json的pack之类的方法一样,由发送端使用Encoder对数据结构进行编码。在接收端收到消息之后,接收端使用Decoder将序列化的数据变化成本地变量。与json编码格式相比,gob编码可以实现json所不支持的struct的方法序列化,利用g.原创 2020-07-21 10:10:05 · 2178 阅读 · 0 评论 -
Go语言标准库学习之os/exec——执行系统命令
os/exec包提供了执行外部命令的方法,它包装了os.StartProcess函数以便更容易的修正输入和输出,使用管道连接I/O,以及作其它的一些调整。这里记录以下os/eexec包的学习笔记,希望对你有帮助。1. 执行外部命令外部执行命令都是Cmd对象的方法,我们先了解一下Cmd对象:type Cmd struct { // Path是将要执行的命令的路径。 // // 该字段不能为空,如为相对路径会相对于Dir字段。 Path string // Ar.原创 2020-07-20 11:33:47 · 886 阅读 · 0 评论 -
Go语言标准库学习之unsafe——不安全的标准库(不同类型指针之间的转换)
unsafe包提供了一些跳过go语言类型安全限制的操作。这个标准库用的比较少,这篇博客向大家介绍以下,如何使用unsafe包,希望对你有帮助。1. unsafe包介绍(1)两种重要类型ArbitraryType// ArbitraryType表示任意一种类型,但并非一个实际存在与unsafe包的类型。type ArbitraryType intPointer// Pointer类型用于表示任意类型的指针。type Pointer *ArbitraryType有4个特殊的只能.原创 2020-07-16 17:27:33 · 363 阅读 · 0 评论 -
Go语言标准库学习之net/rpc——Server/Client之间通信的秘密
RPC(Remote Procedure Call)远程过程调用,它可以使一台主机上的进程调用另一台主机的进程,由以访为其他若干个主机提供服务,也就是我们常说的C/S服务,Server与Client之间通过rpc方式进行通信。下面向大叫刨析以下net/rpc标准库,希望对你有帮助。一、Server和Client1. server(1)Server对象在Server对象中定义了互斥锁用来保护请求数据,另外还包含请求信息和返回的信息以及注册的服务。// Server represents an R.原创 2020-07-15 16:46:50 · 1748 阅读 · 0 评论 -
Go语言标准库学习之context——在go语言中如何使用context优雅的结束一个goroutine
在编程过程中我们经常会遇到context这个单词,他的中文翻译是上下文。所谓的上下文就是指语境,每一段程序都有很多的外部变量。只有想Add这种简单的函数才是没有外部变量的。一旦写的一段程序中有了外部变量,这段程序就是不完整的,不能独立运行,要想让他运行,就必须把所有的外部变量的值一个一个的全部传进去,这些值的集合就叫上下文。本文向大家介绍如何在go语言中使用上下文,希望对你有帮助。1. context包的四个重要方法在介绍context的四个重要方法前,我们先看一下Context接口:type.原创 2020-07-15 12:01:05 · 587 阅读 · 0 评论 -
Go语言标准库学习flag——很方便的编写自己的命令行程序
和其它语言一样,go语言也提供了用来接收命令行参数的功能(flag包),我们可以使用flag包很方便的写一些自定义的命令,就像cobra包一样,这里向大家介绍flag包的使用方法,如果项目需要复杂或更高级的命令行解析方式,可以使用 https://github.com/urfave/cli 或者 https://github.com/spf13/cobra 这两个强大的库。希望对你有帮助。一、flag自定义命令的步骤flag包自定义的步骤很简单,一般只需要两步:接收参数解析参数自定.原创 2020-07-14 14:38:22 · 768 阅读 · 0 评论 -
Go语言标准库学习之sync一(go语言中的锁)
在go语言多线程编程的过程中,我们会遇到多线程进行资源读写的问题,在GO语言中我们可以使用channel进行控制,但是除了channel我们还可以通过sync库进行资源的读写控制,这也就是我们常说的锁。锁的作用就是某个协程(线程)在访问某个资源时先锁住,防止其它协程的访问,等访问完毕解锁后其他协程再来加锁进行访问。本文向记录了学习sync标准库的学习笔记,希望对你有帮助。一、互斥锁1.什么是互斥锁这里摘录百度百科的解释 :互斥锁是用来保证共享数据操作的完整性的。每个对象都对应于一个可称为" 互.原创 2020-07-02 16:00:41 · 598 阅读 · 0 评论 -
Go语言中的html/template标准库学习笔记一(template库的使用)
在MVC(model-view-controller)架构中,我们经常会用到模板文件,本片博文介绍html/template的使用方法,关于模板语法,请参考我的另一篇博客Go语言中的html/template标准库学习笔记一(template语法介绍)1.先介绍一下Template结构体// Template is a specialized Template from "text/template" that produces a safe// HTML document fragment.t.原创 2020-06-30 18:04:11 · 1295 阅读 · 0 评论 -
Go语言中的html/template标准库学习笔记二(template语法介绍)
在Go语言中,我们可以使用html/template标准库将多个html文件组合起来。大家可能会问,为什么要组合多个模板呢?下面通过举例来解答解答这个问题,顺便学习一下template语法。1. 字段操作这里的字段操作是指我们可以将自定义的内容替换模板文件的内容,当然这里不限文件类型,txt文件也是可以进行替换的,只不过html/template会有一些针对html模板非常实用的方法。{{ . }}在上面的语法中使用双括号括起来了一个点,点的两边有空格,这是模板语法必须要满足的格式,其中的点是可.原创 2020-06-29 16:34:14 · 1116 阅读 · 0 评论 -
Go语言标准库之time使用介绍,让你了解什么是UTC、GMT、Unix时间戳、CST、CET、DST时间
Go语言的time库中包含了对时间进行管理的所有操作,本文介绍一下time库的使用,后续持续更新。1. 时间的类型Go语言的time库采用公历的方式记录日期,我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息。func main() { now := time.Now() fmt.Printf("当前时间是:%s\n", now.String()) fmt.Printf("%d年", now.Year()) fmt.Printf("%d月", no.原创 2020-05-24 10:30:27 · 3931 阅读 · 0 评论