![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
文章平均质量分 91
程序猿CKeen
长期坚持做有价值的事!追求极致,持续成长,升维思考
展开
-
一文搞懂go时间库time的使用
时间和日期是我们日常开发中经常会用到的功能。Go 语言中的 time 包提供了处理时间和日期的功能。它包含了许多函数和类型,用于获取当前时间、格式化时间、解析字符串为时间、进行时间计算等操作。原创 2023-08-17 18:54:44 · 907 阅读 · 0 评论 -
Go日志-标准库log包
在做项目开发时,我们可以使用Go语言标准库的log包,还可以使用开源的日志包,但更多的是基于优秀的开源日志包进行二次开发,来实现定制化的日志功能。Go生态中也有一些非常优秀的开源日志包,例如logrus、zap等。...原创 2022-06-20 08:30:20 · 482 阅读 · 0 评论 -
Go日志-Uber开源库zap使用
目录1. zap包介绍2. zap的使用3. 使用Namespace构建嵌套格式4. 构造的Logger对象的选项Option5. 参考资料上一篇我们讲到go日志官方标准库的log的使用方法介绍,官方log标准库虽然简单,也不依赖第三方实现,但是功能相对较弱,不支持日志级别、日志分割、日志格式等,所以在项目中很少直接使用,通用于快速调试和验证。这一篇我们来介绍一下Uber官方开源日志库zap。1. zap包介绍zap是uber开源的日志包,以高性能著称。zap除了具有日.原创 2022-06-24 07:38:05 · 2719 阅读 · 0 评论 -
使用go的MQTT Client接入EMQX
MQTT是客户机服务器发布/订阅消息传输协议。它重量轻,开放,简单,设计便于实现。这些特性使它非常适合在许多情况下使用,包括受限的环境,如机器到机器(M2M)和物联网(IoT)环境中的通信,这些环境需要很小的代码占用和/或网络带宽非常高。该协议运行在TCP/IP或其他提供有序、无损、双向连接的网络协议上,这样可以实现双向的消息推送服务。使用发布/订阅消息模式,提供一对多消息分发和应用程序解耦。与有效负载内容无关的消息传输。原创 2022-09-07 07:30:00 · 2438 阅读 · 1 评论 -
go项目标准化工程结构解析
平时我们学习go或者是写一些小的demo的时候,可能直接在工程下建一个main.go的文件就直接开始。但是如果想做一个长期维护或者正式应用的项目时,我们还是要按一定的规范来设计项目结构,不然随着项目越来越复杂,代码越来越多,依赖也越来复杂,到时候项目可能都没法进行维护了。这时就需要引入合理的项目工程结构了。..................原创 2022-08-16 07:08:48 · 2928 阅读 · 0 评论 -
Go项目配置管理神器之viper使用详解
viper是go一个强大的流行的配置解决方案的库。viper是spf13的另外一个重量级库。有大量项目都使用该库,比如hugo, docker等。它基本上可以处理所有类型的配置需求和格式, viper支持功能。原创 2022-08-08 07:30:00 · 6996 阅读 · 1 评论 -
go使用makefile脚本编译应用
go使用makefile脚本编译打包应用原创 2022-07-29 12:11:34 · 3122 阅读 · 3 评论 -
go操作excel文档,go excelize使用方法详解
今天我们讲一下使用excelize操作excel,首先熟悉一下excel的文件构成,excel分为以下结构1.excel文件,2.sheet页,3.行row,4.列col,5.项cell。原创 2022-07-18 07:30:00 · 4754 阅读 · 2 评论 -
go的命令行库--cobra使用
Cobra是一个用于创建强大的现代CLI应用程序的库。Cobra被用于许多go项目中,如Kubernetes, Hugo和Github CLI等。官方列举了使用cobra库的列表Cobra主要特点:首先需要明确 3 个基本概念:下面拿我们经常使用git的命令对举例上述的命令中git是应用程序的名称,clone/config/commit是一个命令(Command)或者子命令-b/-m/–global为选项(Flag)选项后面的值为具体的参数(Arg)使用的时候我们需要在项目中引用cobra.......原创 2022-07-15 07:30:00 · 2020 阅读 · 1 评论 -
go依赖注入--google开源库wire
如果使用过java的小伙伴一定对依赖注入( dependency injection)很熟悉了,依赖项注入是一种标准的技术,通过显式地向组件提供它们工作所需的所有依赖项,来生成灵活且松散耦合的代码。现在有很多依赖注入框架,go语言防霾呢,就有Uber的dig和Facebook的inject都使用反射来进行运行时依赖注入。Wire主要受到Java Dagger 2的启发,.....................原创 2022-07-04 07:30:00 · 2115 阅读 · 2 评论 -
go的fmt包使用和字符串的格式化
目录1. 标准库fmt提供几种输出/输入相关函数。2. 格式化数据占位符3. 使用fmt个格式化遇到的问题fmt包提供了类似于C的print和scan的函数实现格式化I/O。 fmt主要提供了输出和输入两大类型的函数。1. Print系列函数会将内容输出到系统的标准输出2.Printf函数支持格式化输出字符串到系统的标准输出3. Println函数会在输出内容的结尾添加一个换行符,输出到系统的标准输出4. Fprint系列函数会将内容输出到一个io.Writer接口类型的变量w中,我们通常原创 2022-06-09 08:00:00 · 1145 阅读 · 0 评论 -
go按行读取文件的几种实现方式
目录1. 使用ioutil读取文本2. 使用bufio.Reader的ReadLine读取3.使用bufio.Scanner读取实现方式:使用iouitl一次性读取全部文件内容,然后使用"\n"进行分割成行。这种实现最简单,但是只适合都内容比较小的文件,当读取大文件的时候,一次读到内存需要占用比较大的内存。实现方式:使用NewReader创建bufio.Reader,循环调用Reader的ReadLine按行读取,直接读到文件结束标记EOF。bufio.Reader封装了io, 并实现了缓冲I/原创 2022-06-08 07:30:00 · 6829 阅读 · 0 评论 -
go正则表达式使用指南
正则表达式一般主要用来做文本字符串的检索和匹配检测。一般在爬虫程序中可以用来检索匹配想要的数据,也可以用在对一些输入文本的参数进行校验,比如检验用户注册手机号是否合法。下面我们主要介绍一下go语言中支持的正则表达式模式和go的正则表达式包regexp里面函数提供的功能。......原创 2022-05-20 08:00:00 · 1785 阅读 · 0 评论 -
go的零值使用及注意问题
今天在集成阿里云物联网平台的服务端接口的go SDK的时候,调用了一个阿里云物联网平台查询设备详情的接口,代码如下func (deviceService *DeviceService) GetDeviceDetail(config pub.ProductConfig, imei string) (*model.DeviceDetail, error) { client, err := client2.GetInstance().WithClient(config.AccessKeyId, confi原创 2022-05-05 23:56:02 · 507 阅读 · 0 评论 -
go使用options模式设置参数
Functional Options Pattern(函数式选项模式)可用于传递不同选项配置到方法中。当每次选项参数有变更的时候,可以不改变方法或者接口的参数,这样保证了接口兼容性。使用Options的模式也更利于程序的扩展,所以在众多包中得到了广泛的使用。......原创 2022-04-20 07:30:00 · 2645 阅读 · 0 评论 -
go使用protoc-gen插件编译protobuf文件及构建gRPC的服务
目录1. 安装最新版本release版本的go环境2. 安装最新版本protoc文件,我们使用version 3。3. 默认protoc不支持go,需要安装go的扩展插件4. 配置系统环境变量5. 编写proto文件6. 执行命令,生成go的pb文件7. 编写RPC的server和client8.遇到问题参考文章gRPC使用参考:Quick start | Go | gRPCproto 3的语法参考:https://developers.goog.原创 2022-04-15 07:30:00 · 2167 阅读 · 0 评论 -
Go的接口(interface)介绍和使用
1. 接口(interface)的类型在Go语言中接口(interface)是一种类型,是一种抽象的类型。首先我们看系统interface类型func main(){ // 定义一个空接口x var x interface{} fmt.Printf("type:%T value:%v\n", x, x) s := "hello world!" x = s fmt.Printf("type:%T value:%v\n", x, x) i := 128 x = i fm原创 2022-03-21 08:00:00 · 2607 阅读 · 0 评论 -
Golang学习笔记--unsafe.Pointer和uintptr
uintptr是一个整数类型,大到足以容纳任何指针的位模式type ArbitraryType inttype Pointer *ArbitraryType// uintptr is an integer type that is large enough to hold the bit pattern of any pointer.type uintptr uintptr原创 2021-02-01 07:40:00 · 1147 阅读 · 4 评论 -
Golang学习笔记--slice使用总结
slice(切片)代表变长的序列,序列中每个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已。1.slice创建方式:slice1 := make([]int,5,10)len: 5, cap : 10Slice(切片)代表变长的序列,序列中每个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已。3.slice.原创 2021-01-26 09:50:56 · 1185 阅读 · 1 评论 -
golang学习笔记--数组使用总结
数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。1.数组的几种创建方式使用数组长度和指定数据初始化进行创建 arr1 := [10]int {3,6,9,4,5,3,5,7,8,2}fmt.Println(arr1)// [3 6 9 4 5 3 5 7 8 2]fmt.Println(len(arr1))// 10 根据初始化参数的个数来创建 arr2 := [...]int {3,6,9,4,5,3,5,7,8}fmt.Print.原创 2021-01-23 10:41:44 · 289 阅读 · 0 评论 -
Golang学习笔记--error处理
Golang error处理1.1 Golang 官方库对的error支持(1)Golang的错误比较轻量,Error的错误只需要实现buildin包下的error的interface即可 type error interface { Error() string }(2)Goland的默认支持实现为errors包下的实现 // errors.go文件 package errors // New returns an error that forma原创 2021-01-06 19:09:55 · 1556 阅读 · 4 评论