推荐一个 Go GUI 实战项目

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

Go Fiber 框架系列教程 02:详解相关 API 的使用

大家好,我是 polarisxu。 该系列第一篇文章发出后,大家褒贬不一,很正常。选什么,不选什么,大家自己评估,没有什么是最好的。我这个系列,更多只是让大家对 Fiber 有些了解,说不定正好合你胃口呢? 前面对 Fiber 有了大概的印象。今天着重较深入探讨 Fiber 相关功能。 先从 fiber.New 函数配置开始。 01 配置 大部分 Go 框架,获得实例的函数是不支持配置的,比如 Gin、Echo 等。但 Fiber 框架的 New 函数支持传

Go Fiber 框架系列教程 01: 和 Express 对比学习

大家好,我是 polarisxu。 每次发框架相关的文章,总有人提到 Go Fiber 框架。于是乎,学习了下 Fiber,感觉确实挺不错的。因此写下这个 Fiber 系列。 Fiber 项目地址:https://github.com/gofiber/fiber,目前 Star 数 15.3k+。 01 Fiber 框架 这是一个 Go 语言 Web 框架,启发自 NodeJS 框架:Express 。该框架基于 FastHTTP 构建,旨在简化、零内存分配和提高性能,以便快速开

Go Module:私有不合规库怎么解决引用问题

大家好,我是 polarisxu。 有一个朋友咨询一个问题: 实际项目中,使用 Go Module 难免会有一些自己的库要引用,这些库使用自建的 Git 服务管理,比如 GitLab 等。针对这样的情况,不少教程都是让设置 GOPRIVATE,即不走 GOPROXY。 然而,有些时候,不仅库是私有的,而且地址很可能不是「合规」的。什么是「不合规」的? 不是 HTTPS 非 443 或 80 端口 直接使用 IP 地址 不是 HTTPS 问题不大,主要是非 443 或

Go1.17 新特性:go get 变了

大家好,我是 polarisxu。 为什么把 Go 的一些小变化单独写文章,而不是一篇文章介绍所有的变化?主要是想让大家对某一个特性有更深的记忆。全部列出,很容易一眼而过,过段时间就忘记了。但一个变化,专门一篇文章介绍,更容易记住。 01 安装命令会警告 一直以来,go get 用于下载并安装 Go 包、命令等,而 go install 在 module 时代几乎很少使用,在 GOPATH 年代,go install 用来编译安装本地项目。 自 1.16 起,官方

Go1.17 新特性:testing 包的相关变化

大家好,我是 polarisxu。 今天介绍下 Go1.17 中的特性:testing 包的一些变化。先看 Release Notes 关于 testing 变化的描述: Added a new testing flag -shuffle which controls the execution order of tests and benchmarks. The new T.Setenv and B.Setenv methods support setting an environment variable for the duration of the test or benchmark. 关于 shuffle 这个 flag,1.17 还未发布时,我就写过文章介绍:Go1.17这个新特性竟然是6年前提出来的 。关于它的作用,记住关键一点:我们写测试时,测试之间别相互依赖,应该是独立的。 本文着

StackOverflow 上关于 Go select 死锁的问题

大家好,我是 polarisxu。 前两天,火丁笔记发了一篇文章:《一个 select 死锁问题》 ,又是一个小细节。我将其中的问题改一下,更好理解: package main import "sync" func main() { var wg sync.WaitGroup foo := make(chan int) bar := make(chan int) wg.Add(1) go func() { defer wg.Done() select { case foo <- <-bar: default: println("default") } }() wg.Wait() } 按常规理解,go func 中的 select 应该执行 default 分支,程序正常运行。但结果却不是,而是死锁。可以通过该链接测试:https://play.studygolang.com/p

新书推荐:用 Gin 框架构建分布式应用

大家好,我是 polarisxu。 有段时间没推荐新书了。最近看到一本书《Building Distributed Applications in Gin》,本书是学习如何使用 Gin 中的各种功能构建大规模分布式应用程序的有效指南。出版日期:2021 年 7 月 23 日,英文版(目前肯定没有中文版)。购买地址:https://www.packtpub.com/web-development/building-distribute

Go 官网要变天。。。

大家好,我是 polarisxu。 Golang 官网,有些人可能从来没有访问过,因为国内一般访问不了。但我经常和「它」打交道,因为 Go 语言中文网很早就对 Go 官网做了一个镜像。最近 Go1.17 发布了,利用周末,我把 Go 官网镜像升级了下,但折腾了很久。。。发现 Go 官网要「变天」了! 之前写过一篇文章:《回顾 Go 官网的演变史》 ,没看的可以看看。 01 这次又变了 如果你访问了 Go 官网(golang.org),

Gin 这是要成为 Go 官方框架?

大家好,我是 polarisxu。 常浏览 Go 官方网站的朋友可能留意到,Go 网站近一段时间增加了不少文档、教程。可能官方意识到,Go 被越来越多的用于 API 开发,于是近期又出了一个这方面的教程:《Tutorial: Developing a RESTful API with Go and Gin》 。 是的,基于 Gin 框架。在众多框架中,Go 官方选择了 Gin 框架,可见这个框架的受欢迎程度。 这份官方的教程包含以下几个方面: 设计 API 接口:以一个虚拟