大家好,我是 polarisxu。 从 11 月 01 日起,Go1.18 就冻结了,也就是 1.18 的功能已经确定。 今天介绍一个 Go1.18 废弃的 API,同时介绍响应的替代 API。 01 strings.Title 被废弃 查看 go tip 标准库文档,发现 strings.Title 被标识为 deprecated:https://pkg.go.dev/strings@master,而且该 API 的文档默认被折叠了。 pkg.go.dev 针对废弃的 API 使用了不一样的样式。 该 API 是干什么的?为
大家好,我是 polarisxu。 Go 1.18 虽然还有 4 个月发布,但大部分的功能基本确定。我们可以提前知晓、熟悉。 今天介绍的是标准库中新增的一个 API:strings.Clone()。 从名称可以知道,这是克隆。很多其他语言一开始就有这样的功能。比如 PHP 有 clone 关键字、__clone 魔术方法;Java 的根类 Object 有 clone 方法等。 01 函数签名 该函数的定义如下(见:https://pkg.
大家好,我是 polarisxu。 项目中,特别是 Web 项目,经常需要获得项目的根目录,进而可以访问到项目相关的其他资源,比如配置文件、静态资源文件、模板文件、数据文件、日志文件等(Go1.16 后,有些可以方便的通过 embed 内嵌进来)。比如下面的目录结构:(路径是 /Users/xuxinhua/stdcwd) ├── bin ├── cwd ├── main.go └── log ├── error.log 为了正确读取 error.
大家好,我是 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 环境变量的作用是什么呢? 简单
大家好,我是 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
大家好,我是 polarisxu。 项目中,特别是开源项目,会特别重视项目的版本号。有些项目,会把版本号写入源码中,每次升级都修改源码号。不过这不是特别好的方式。本文通过学习 Go 语言源码的处理方式来掌握它,并应用于自己的项目中。 本文基于 Go1.17,不同版本的实现细节可能有所不同 01 如何获取版本号 在 Go 语言项目中,如果要获取当前 Go 语言版本,只需要调用 runtime.V
大家好,我是 polarisxu。 国庆假期结束了,大家玩的开心吗?! 该收收心,认真学习工作了~ manning 最近有 2 本 Go 相关图书,推荐给大家。 01 Build an Orchestrator in Go 本书希望带领大家通过使用 Go 和 Docker API 构建自己的编排系统,深入了解 Kubernetes 和其他编排系统。具体来说包括: 了解构成任何编排系统的组件 将容器安排到工作节点 使用 Docker API 启动和停止容器 使用简单的 API 管理工作节点集群 使用从 cutting-edge Google Borg 研究论文中获取的算法
大家好,我是 polarisxu。 实际项目中,大家经常不会对 Web API 写单元测试。Go 标准库不仅有 testing 包支持普通单元测试,还有 net/http/httptest 包支持 HTTP 的测试。 本文虽然是测试 Fiber 应用程序,但对其他的框架也适用。 01 如何测试 Web API 的单元测试如何进行? 本节介绍的测试方法主要是验证请求返回的 HTTP 状态码是否符合预期。 如果返回的状态码是 200 OK,那么表示这个测试用例成功(Pass),如果返回的状态码是 404
大家好,我是 polarisxu。 Middleware(中间件) 是一个 Web 框架重要的组成部分,通过这种模式,可以方便的扩展框架的功能。目前 Go Web 框架都提供了 Middleware 的功能,也有众多可用的 Middleware。 Fiber 也是如此,官方提供了众多的 Middleware,方便用户直接使用。本文先看看 Fiber 中 Middleware 的定义,然后介绍 Fiber 中的几个 Middleware,最后自己实现一个 Middlewa
泛型,是 Go 语言多年来最令人兴奋和根本性的变化之一。没有泛型,很多人以此「鄙视」Go 语言。当然,也有人觉得根本不需要泛型。有泛型,不代表你一定要用。平心而论,有些场景下,泛型还是很有必要和帮助的。 现在已经确认,Go1.18 正式包含泛型(Go1.17 已经可以试用,只是默认不支持,见之前的文章:扬眉吐气:刚刚,Go 已经默认支持泛型了 )。 不过,不少人对泛型还是迷迷糊