本系列文章总共包括 4 篇,主要帮助大家理解 Go 语言中一些语言机制和其背后的设计原则,包括指针、栈、堆、逃逸分析和值传递/地址传递。这一篇是本系列的第一篇,主要介绍栈和指针。 我要晨读
你或许想在 Docker 中使用 Go,原因有: 如果你想在 Kubernetes 上运行,打包为镜像是必须的(就像我一样) 你不得不在同一台机器上运行不同的 Go 版本 开发和生产都需要精确的、可复制的、可共享的和确定的环境 你需要快速和简单的方式来构建和部署编译好的二进制文件 你想快速开始(任何安装了 Docker 的人都可以直接开始编写代码而不需要设置其他依赖或 GOPATH 环境变量) 我要晨读
在之前的文章中,我提到了一个关于 accept interfaces, return structs 的参考指南,在查看同事代码的时候经常会被问“为什么”。特别是这不是一个必须遵守的规则。这个想法的关键点以及理解什么时候妥协,在于维护项目灵活性和避免抢占抽象(译者注:“Preemptive abstractions” 并发系统中连续组件的轻量级验证方案的一种抽象技术)之间的平衡。 我要晨读
Go 语言没有内置 abs() 标准函数来计算整数的绝对值,这里的绝对值是指负数、正数的非负表示。 我最近为了解决 Advent of Code 2017 上边的 Day 20 难题,自己实现了一个 abs() 函数。如果你想学点新东西或试试身手,可以去一探究竟。 我要晨读
为你的 API 提供一个文档比你想象中更加有用,即使你没有公开你的 API ,为你的前端或者移动团队提供一个文档会比你提供截图/片段或使用 Postman/Insomnia (带有同步的高级版本)等付费产品更容易。借助 SwaggerUI ,您可以自动获得所有 API 的设计良好的文档。当切换到 Go 时,由于缺少文档/教程,我在配置它的时候出现了一些问题,所以我决定写一个。 我要晨读
最近我使用 Go 语言完成了一个正式的 web 应用,有一些方面的问题在使用 Go 开发 web 应用过程中比较重要。过去,我将 web 开发作为一项职业并且把使用不同的语言和范式开发 web 应用作为一项爱好,因此对于 web 开发领域有一些心得体会。 我要晨读
Go 是一门相当新的语言,并且在最近几年得到了越来越多的关注。它的功能非常强大,而且拥有出色的工具来设计快速高效的 API 接口。虽然已经有很多库可以创建一个 API 接口,像 Go Buffalo 和 Goa 之类;但是,如果能够做到除了数据库和缓存连接器之外,仅仅使用标准库来创建,无疑将非常有趣。 我要晨读
在网络编程做了一些研究之后,我邂逅了一篇题目为《Let's Make a NTP Client in C》,由 David Lettier(Lettier) 编写的文章。这篇文章鼓舞了我用 Go 去做相似的事。 我要晨读
函数是一个独立的,可以被重用的,可以一次又一次运行的代码块。函数可以有输入参数,也可以有返回值输出。 我要晨读
出于好奇,我最近开始接触一些 Go 的代码。我之前对它有一些了解,但是从来没有尝试去写(没有需求)。但是现在我们团队选择使用 Go 来开发一个项目,所以我觉得这是一个获得实际经验的好机会。 我要晨读
为了回答这个问题, 我们需要了解一下有关计算机语言的理论知识。 但只要一点就足够了,不用担心有多复杂。 计算机语言,是由一系列有效的规则组成的。比如下面这个规则: 我要晨读
身份认证和授权对 web 应用的安全至关重要。最近,我用 Go 完成了我的第一个正式的 web 应用,这篇文章是在这个过程中我所学到的部分内容。 我要晨读
介绍 Web Face ID,如何使用 HTML5,Go 和 Facebox 进行人脸识别 我要晨读
Go 带来的是 Gotham (译者注:哥谭,是蝙蝠侠的家乡,充满犯罪的黑暗城市,大意就是乱世出枭雄,Go 正是这样是个超级英雄而存在) ,它将分布式系统从黑暗中摆脱出来。 插画归功于 Ashley McNamara 和 Renee French (译者注:两位都是设计 Go 那只老鼠的大神) 我要晨读
Golang 中 defer 的五个坑 我要晨读
我利用闲暇的时间尝试着用 Go 来写一个网站小应用。在 Go 标准库中有一些非常棒的包可以在 Web 应用开发中使用并且我非常喜欢使用它们。实际上,在 Go 官方的 wiki 中有一个编写 Web 应用的小教程。但是,却没有提及如何用标准库去测试 Web 应用,而且也没有搜索到比较好的一个方案。 我要晨读
应用的复杂性在很多方面都在增长,诸如可扩展性、开发、测试以及部署。在企业级开发中,那种老式的大型单一架构看起来已经过时了。在我工作的众多公司中,都希望系统是通过简单的插件组合在一起的方式构建的。这就是为什么许多数公司都基于微服务架构来开发他们的产品。目前有 Netflix(译者注:美国流媒体巨头、世界最大的收费视频网站)、PayPal、Amazon、eBay 以及 Twitter 等少数几家公司正在使用微服务。 我要晨读
在以前内存和处理能力(CPU)都是非常昂贵的,于是直接在位上编程就成为了处理信息的首选方式(在有些情况下也是唯一的方式)。如今,直接对位进行操作在底层系统、图像处理和密码学等领域还是至关重要的。 我要晨读
一般来说,当做某事有两种合理的方式的时候,选择不违反这些规则的那一项。只有在有非常强力的理由时才违反这些规则。 我要晨读
Go 语言是静态类型语言,虽然它也可以表现出动态类型,但是使用一个嵌套的 map[string]interface{} 在那里乱叫会让代码变得特别丑。通过掌握语言的静态特性,我们可以做的更好。 我要晨读