由于go语言与c语言有着千丝万缕的暧昧关系,两者之间的调用可以通过语言层面实现。下文是对此的总结。 我要晨读

已有713人晨读

通道和 goroutine 是 Go 语言基于 CSP( communicating sequential processes ,通信顺序进程)并发机制的核心部分。阅读本文可以学到一些关于channel的提示和技巧,尤其是“缓冲” channel ,在 “生产者-消费者” 情境中广泛使用了缓冲通道作为队列。 我要晨读

已有885人晨读

即使使用了 Go 4 年,我仍然会被这门语言震惊到。多亏了编译器执行的静态代码分析,编译器可以对其生成的代码进行一些有趣的优化。编码器执行的其中一种分析称为逃逸分析。这会对内存管理进行优化和简化。 我要晨读

已有694人晨读

为了理解 Go 为什么能更好地处理并发性,首先需要知道什么是并发性 1。并发性是独立执行计算的组成部分:是一种更好地编写与现实世界进行良好交互的干净的代码的方法。通常,即使并发不等同于并行,人们也会将并发的概念与并行的概念混淆:是,尽管它能够实现并行性。所以,如果你只有一个处理器,你的程序仍然可以并发,但不能并行。另一方面,良好的并发程序可以在多处理器上并行运行 2。这一特性是非常重要的。让我们来谈谈 Go 如何让程序利用在多处理器 / 多线程环境中运行的优势。或者说,Go 提供了什么工具来编写并发程序, 我要晨读

已有778人晨读

每一天,或者是每隔几天,总有人来到 /r/golang ,并询问些类似如下的问题“哪个框架是最好的?”。我认为我们应该尝试提出这个问题,至少以一种容易理解的方式提出。你不应该使用框架。 我要晨读

已有710人晨读

只要你写过 Go 程序,肯定已经知道 Go 语言内置了一个功能完备的测试库。在这篇文章中我们将列出几种能帮助你提高编写测试能力的策略。这些策略是我们在以往的编程经历中总结出的可以很好的节省你的时间和精力的经验。 我要晨读

已有722人晨读

又到了Go语言新版本的发布时间窗口了!这次的主角是Go 1.10。那这次版本更新有哪些值得关注的变化呢?来自 tonybai 的系列文章:《Go x.xx 中值得关注的几个变化》 我要晨读

已有728人晨读

名字在 golang 中的重要性和在其他任何一种语言是一样的。他们甚至含有语义的作用:在一个包的外部某个名字的可见性是由这个名字首字母是否是大写来决定的。那么,如何调用私有函数? 我要晨读

已有795人晨读

上回在 用 Go 写一个轻量级的 ssh 批量操作工具 里提及过,我们做 Golang 并发的时候要对并发进行限制,对 goroutine 的执行要有超时控制。那会没有细说,这里展开讨论一下。 我要晨读

已有628人晨读

Goroutine ID 真实存在吗?当然存在。Go 运行时一定有某种方法来跟踪 goroutine ID。那我该使用它们吗?有没有哪些包是我可以使用的? 我要晨读  相关阅读: 网页链接 

已有782人晨读

我经常有一些困惑,crypto/rand 包和 math/rand 包是如何关联的,或者它们是如何按照预期的方式(一起)工作的?这是其他人已经思考过的问题,还是仅仅我个人的突发奇想呢?终于有一天,我决定攻克这个问题,这篇博客就是这次努力的结果。 我要晨读

已有1069人晨读

创建一个 Golang app 是一件简单又轻松的事情,但是有时候你想给你的应用锦上添花:创建一个 GUI! 在本篇文章中,我将通过使用 astilectron 工具中的 bootstrap 以及 bundler 给一个简单的 Golang 程序添加 GUI。 我要晨读

已有1756人晨读

Golang 拥有类似C语言的指针这个相对古老的特性。但不同于 C 语言,Golang 的指针是单独的类型,而不是 C 语言中的 int 类型,而且也不能对指针做整数运算。从这一点看,Golang 的指针基本就是一种引用 我要晨读

已有1010人晨读

方法是包含了接收者的函数。到底什么意思呢。 首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体。例 func main() { fmt.Println("Hello go") } 我要晨读

已有954人晨读