摘要: 简介 切片(slice)是 Go 语言提供的一种数据结构,使用非常简单、便捷。但是由于实现层面的原因,切片也经常会产生让人疑惑的结果。掌握切片的底层结构和原理,可以避免很多常见的使用误区。 底层结构 切片结构定义在源码runtime包下的 slice.go 文件中: // src/runtime/s 阅读全文
posted @ 2021-06-25 07:47 darjun 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 简介 在编程开发中,我们经常会需要频繁创建和销毁同类对象的情形。这样的操作很可能会对性能造成影响。这时,常用的优化手段就是使用对象池(object pool)。需要创建对象时,我们先从对象池中查找。如果有空闲对象,则从池中移除这个对象并将其返回给调用者使用。只有在池中无空闲对象时,才会真正创建一个新 阅读全文
posted @ 2021-06-25 07:40 darjun 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 简介 不管什么时候,处理时间总是让人头疼的一件事情。因为时间格式太多样化了,再加上时区,夏令时,闰秒这些细枝末节处理起来更是困难。所以在程序中,涉及时间的处理我们一般借助于标准库或第三方提供的时间库。今天要介绍的dateparse专注于一个很小的时间处理领域——解析日期时间格式的字符串。 快速使用 阅读全文
posted @ 2021-06-25 07:38 darjun 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 简介 bubbletea是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应,如键盘按键。一起来看下吧。先看看bubbletea能做出什么效果: 感谢kiyonlin推荐。 快速使 阅读全文
posted @ 2021-06-16 07:33 darjun 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 概述 数据库用来存储数据。只要不是玩具项目,每个项目都需要用到数据库。现在用的最多的还是 MySQL, "PostgreSQL" 的使用也在快速增长中。 在 Web 开发中,数据库也是必须的。本文将介绍如何在 Go 语言中操作数据库,基于 MySQL。本文假定大家已经掌握了数据库和 MySQL 的基 阅读全文
posted @ 2020-01-22 06:27 darjun 阅读(559) 评论(1) 推荐(0) 编辑
摘要: 简介 上一篇文章 "Go 每日一库之 viper" 中,我们介绍了 viper 可以监听文件修改进而自动重新加载。 其内部使用的就是 这个库,它是跨平台的。今天我们就来介绍一下它。 快速使用 先安装: 后使用: golang package main import ( "log" "github.c 阅读全文
posted @ 2020-01-21 06:43 darjun 阅读(3014) 评论(0) 推荐(0) 编辑
摘要: 简介 上一篇文章介绍 "cobra" 的时候提到了 "viper" ,今天我们就来介绍一下这个库。 viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件; 可以设置监听配置文件的修改,修改时 阅读全文
posted @ 2020-01-20 08:18 darjun 阅读(1532) 评论(1) 推荐(0) 编辑
摘要: 简介 "cobra" 是一个命令行程序库,可以用来编写命令行程序。同时,它也提供了一个脚手架, 用于生成基于 cobra 的应用程序框架。非常多知名的开源项目使用了 cobra 库构建命令行,如 "Kubernetes" 、 "Hugo" 、 "etcd" 等等等等。 本文介绍 cobra 库的基本 阅读全文
posted @ 2020-01-18 17:29 darjun 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 简介 ini 是 Windows 上常用的配置文件格式。MySQL 的 Windows 版就是使用 ini 格式存储配置的。 "go ini" 是 Go 语言中用于操作 ini 文件的第三方库。 本文介绍 库的使用。 快速使用 go ini 是第三方库,使用前需要安装: 也可以使用 GitHub 上 阅读全文
posted @ 2020-01-16 07:00 darjun 阅读(3230) 评论(0) 推荐(3) 编辑
摘要: 简介 今天我们来看一个很小,很实用的库 "go homedir" 。顾名思义, 用来获取用户的主目录。 实际上,使用标准库 我们也可以得到这个信息: 那么为什么还要 库? 在 Darwin 系统上,标准库 的使用需要 cgo。所以,任何使用 的代码都不能交叉编译。 但是,大多数人使用 的目的仅仅只是 阅读全文
posted @ 2020-01-15 06:43 darjun 阅读(665) 评论(0) 推荐(0) 编辑