Go1.18 快讯:新增字符串 Clone API

大家好,我是 polarisxu。 Go 1.18 虽然还有 4 个月发布,但大部分的功能基本确定。我们可以提前知晓、熟悉。 今天介绍的是标准库中新增的一个 API:strings.Clone()。 从名称可以知道,这是克隆。很多其他语言一开始就有这样的功能。比如 PHP 有 clone 关键字、__clone 魔术方法;Java 的根类 Object 有 clone 方法等。 01 函数签名 该函数的定义如下(见:https://pkg.

Go:如何获得项目根目录?

大家好,我是 polarisxu。 项目中,特别是 Web 项目,经常需要获得项目的根目录,进而可以访问到项目相关的其他资源,比如配置文件、静态资源文件、模板文件、数据文件、日志文件等(Go1.16 后,有些可以方便的通过 embed 内嵌进来)。比如下面的目录结构:(路径是 /Users/xuxinhua/stdcwd) ├── bin ├── cwd ├── main.go └── log ├── error.log 为了正确读取 error.

Go 如何获取和设置环境变量

大家好,我是 polarisxu。 今天的文章比较基础,但却是必须掌握的,而且本文有些内容,也许你之前没想过。希望这篇文章能够让你理解环境变量并掌握 Go 环境变量相关操作。 01 从安装 Go 说起 其实不止是安装 Go,其他语言一本也会有类似的问题。一般来说,安装完 Go 后,会建议将 go 可执行程序配置到 PATH 环境变量中。 比如我本地的 PATH 环境变量的值: $ echo $PATH /Users/xuxinhua/.go/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Users/xuxinhua/.cargo/bin:/Users/xuxinhua/bin:/usr/local/git/bin:/Users/xuxinhua/.composer/vendor/bin:/Users/xuxinhua/go/bin 那么 PATH 环境变量的作用是什么呢? 简单

重磅变动:更快找到微信公众号里的Go文章

大家好,我是 polarisxu。 搜索引擎一直是查找资料主要的方式,Go语言中文网站点的流量,近 80% 来自搜索引擎。 01 然而,微信公众号一直是一个私域,它禁止搜索引擎抓取。最近,各种 zc,大厂做了一些调整。有人发现,微信公众号删除了 robots.txt: https://mp.weixin.qq.com/robots.txt 内容是空的; robots.txt 最近一次内容 https://web.archive.org/web/20210929115539/mp.weixin.qq.com/robots.txt 所以,现在微信公众号内容可以被搜索引擎抓取了。 实际验证一下: 1)Google 2)Bi

Go 这样设置版本号:我们的项目也可以

大家好,我是 polarisxu。 项目中,特别是开源项目,会特别重视项目的版本号。有些项目,会把版本号写入源码中,每次升级都修改源码号。不过这不是特别好的方式。本文通过学习 Go 语言源码的处理方式来掌握它,并应用于自己的项目中。 本文基于 Go1.17,不同版本的实现细节可能有所不同 01 如何获取版本号 在 Go 语言项目中,如果要获取当前 Go 语言版本,只需要调用 runtime.V

假期结束,推荐 2 本 manning 出的 Go 图书

大家好,我是 polarisxu。 国庆假期结束了,大家玩的开心吗?! 该收收心,认真学习工作了~ manning 最近有 2 本 Go 相关图书,推荐给大家。 01 Build an Orchestrator in Go 本书希望带领大家通过使用 Go 和 Docker API 构建自己的编排系统,深入了解 Kubernetes 和其他编排系统。具体来说包括: 了解构成任何编排系统的组件 将容器安排到工作节点 使用 Docker API 启动和停止容器 使用简单的 API 管理工作节点集群 使用从 cutting-edge Google Borg 研究论文中获取的算法

Go Fiber 框架系列教程 04:测试应用

大家好,我是 polarisxu。 实际项目中,大家经常不会对 Web API 写单元测试。Go 标准库不仅有 testing 包支持普通单元测试,还有 net/http/httptest 包支持 HTTP 的测试。 本文虽然是测试 Fiber 应用程序,但对其他的框架也适用。 01 如何测试 Web API 的单元测试如何进行? 本节介绍的测试方法主要是验证请求返回的 HTTP 状态码是否符合预期。 如果返回的状态码是 200 OK,那么表示这个测试用例成功(Pass),如果返回的状态码是 404

Go Fiber 框架系列教程 03:中间件

大家好,我是 polarisxu。 Middleware(中间件) 是一个 Web 框架重要的组成部分,通过这种模式,可以方便的扩展框架的功能。目前 Go Web 框架都提供了 Middleware 的功能,也有众多可用的 Middleware。 Fiber 也是如此,官方提供了众多的 Middleware,方便用户直接使用。本文先看看 Fiber 中 Middleware 的定义,然后介绍 Fiber 中的几个 Middleware,最后自己实现一个 Middlewa

Go泛型系列:提前掌握Go泛型的基本使用

泛型,是 Go 语言多年来最令人兴奋和根本性的变化之一。没有泛型,很多人以此「鄙视」Go 语言。当然,也有人觉得根本不需要泛型。有泛型,不代表你一定要用。平心而论,有些场景下,泛型还是很有必要和帮助的。 现在已经确认,Go1.18 正式包含泛型(Go1.17 已经可以试用,只是默认不支持,见之前的文章:扬眉吐气:刚刚,Go 已经默认支持泛型了 )。 不过,不少人对泛型还是迷迷糊

推荐一个 Go GUI 实战项目

大家好,我是 polarisxu。 一直以来,挺多人想尝试 Go GUI 项目的,经过这些年的发展,响应的方案也挺多的,有原生的、有基于 Web 的。其中,fyne 这个 Go GUI 框架,发展比较好。之前写过一篇文章:Go 真的也可以进行 GUI 开发:还有这样的图书呢 。 今天推荐一个开源 Go GUI 项目:wormhole-gui,项目地址:https://github.com/Jacalz/wormhole-