即使使用了 Go 4 年,我仍然会被这门语言震惊到。多亏了编译器执行的静态代码分析,编译器可以对其生成的代码进行一些有趣的优化。编码器执行的其中一种分析称为逃逸分析。这会对内存管理进行优化和简化。 我要晨读
为了理解 Go 为什么能更好地处理并发性,首先需要知道什么是并发性 1。并发性是独立执行计算的组成部分:是一种更好地编写与现实世界进行良好交互的干净的代码的方法。通常,即使并发不等同于并行,人们也会将并发的概念与并行的概念混淆:是,尽管它能够实现并行性。所以,如果你只有一个处理器,你的程序仍然可以并发,但不能并行。另一方面,良好的并发程序可以在多处理器上并行运行 2。这一特性是非常重要的。让我们来谈谈 Go 如何让程序利用在多处理器 / 多线程环境中运行的优势。或者说,Go 提供了什么工具来编写并发程序, 我要晨读
每一天,或者是每隔几天,总有人来到 /r/golang ,并询问些类似如下的问题“哪个框架是最好的?”。我认为我们应该尝试提出这个问题,至少以一种容易理解的方式提出。你不应该使用框架。 我要晨读
Go代码打通HTTPs 我要晨读
Go指南:牛顿法开方 我要晨读
只要你写过 Go 程序,肯定已经知道 Go 语言内置了一个功能完备的测试库。在这篇文章中我们将列出几种能帮助你提高编写测试能力的策略。这些策略是我们在以往的编程经历中总结出的可以很好的节省你的时间和精力的经验。 我要晨读
又到了Go语言新版本的发布时间窗口了!这次的主角是Go 1.10。那这次版本更新有哪些值得关注的变化呢?来自 tonybai 的系列文章:《Go x.xx 中值得关注的几个变化》 我要晨读
再测Golang的JSON库 我要晨读
gorose orm+dotweb框架快速构建go web网站实战(六) 我要晨读
k8s1.9.2基于kubeadm高可用安装教程,包含离线安装包,支持简单快速安装 我要晨读
名字在 golang 中的重要性和在其他任何一种语言是一样的。他们甚至含有语义的作用:在一个包的外部某个名字的可见性是由这个名字首字母是否是大写来决定的。那么,如何调用私有函数? 我要晨读
上回在 用 Go 写一个轻量级的 ssh 批量操作工具 里提及过,我们做 Golang 并发的时候要对并发进行限制,对 goroutine 的执行要有超时控制。那会没有细说,这里展开讨论一下。 我要晨读
【golang踩“坑”记】 string(fid) 与 strconv.Itoa(fid) 我要晨读
我经常有一些困惑,crypto/rand 包和 math/rand 包是如何关联的,或者它们是如何按照预期的方式(一起)工作的?这是其他人已经思考过的问题,还是仅仅我个人的突发奇想呢?终于有一天,我决定攻克这个问题,这篇博客就是这次努力的结果。 我要晨读
创建一个 Golang app 是一件简单又轻松的事情,但是有时候你想给你的应用锦上添花:创建一个 GUI! 在本篇文章中,我将通过使用 astilectron 工具中的 bootstrap 以及 bundler 给一个简单的 Golang 程序添加 GUI。 我要晨读
Golang 拥有类似C语言的指针这个相对古老的特性。但不同于 C 语言,Golang 的指针是单独的类型,而不是 C 语言中的 int 类型,而且也不能对指针做整数运算。从这一点看,Golang 的指针基本就是一种引用 我要晨读
方法是包含了接收者的函数。到底什么意思呢。 首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体。例 func main() { fmt.Println("Hello go") } 我要晨读
来自 Rob Pike 的错误处理实践:Upspin 项目使用自定义的包 —— upspin.io/errors —— 来表示系统内部出现的错误条件。这些错误满足标准的 Go error 接口,但是使用的是自定义类型 upspin.io/errors.Error,该类型具有一些已经证明对项目有用的属性。 我要晨读
Go调优技术:本文带领我们体验各种各样的 Go 代码调优工具。 我要晨读