为什么要使用 go module proxy

# 为什么要使用 go module proxy 在看过 `Go module` 的简介之后,我以为我已经知道了这个功能我需要知道的一切。但是很快,我意识到并不是这样。最近,人们开始提倡使用 `Go module proxy`。在研究了利弊之后,我得出结论,这将是近年来 Go 语言`最重要`的变化之一。 但为什么会这样呢?是什么让 `Go module` 代理如此特别? 使用 `Go modules` 时,如果向干净的缓存的计算机上添加新依赖项或构建 `Go module`,它将基...阅读全文

Go语言中文网 2019-09-23 12:37:52 TomatoAres

无缓冲和有缓冲通道

# 无缓冲和有缓冲通道 !["Go 之旅 插图,由 Go Gopher 的 Renee French 创作](https://raw.githubusercontent.com/studygolang/gctt-images2/master/buffered-and-unbufferd-channel/next-recvier.png) Go 中的通道(channel)机制十分强大,但是理解内在的概念甚至可以使它更强大。实际上,选择缓冲通道或无缓冲通道将改变应用程序的行为和性能。 ...阅读全文

Go语言中文网 2019-09-23 12:34:16 TomatoAres

Unit Test In Go With Docker

本篇文章主要讲解如何在 Docker 中进行 Go 单元测试,依赖 Docker 和 Go Modules。 为什么是 Docker 在 Docker 之前我们往往需要在 Jenkins 服务器上配置不同的 Go 版本以及针对每个项目配置 GOPATH,项目之间的隔离性差,经常出现基础库版本冲突的问题。 有了 Docker,我们可以在不同容器中运行单元测试,该测试不局限不同项目,甚至可以是同一项目不同分支。 所以在测试隔离性和项目测试并发度上都有很大提升,而且测试结束后,环境清理也简单许多。 为...阅读全文

51CTO博客 2019-09-23 12:04:56 xjtuhit

go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包

本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包等问题,下面我们沿用上篇文章的示例代码开始本文的学习吧! 斐波那契数列是形如 1 1 2 3 5 8 13 21 34 55 的递增数列,即从第三个数开始,后一个数字是前两个数字之和,保持此规律无限递增... 开门见山,直接给出斐波那契数列生成器,接下来的文章慢慢深挖背后隐藏的奥秘,一个例子讲清楚什...阅读全文

掘金 2019年09月23日 雪之梦技术驿站

go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包

本篇文章是 `Go` 语言学习笔记之**函数式编程**系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: **闭包** 空谈误国,实干兴邦,以具体代码示例为基础讲解**什么是闭包**以及为什么需要闭包等问题,下面我们沿用上篇文章的示例代码开始本文的学习吧! > **斐波那契数列**是形如 `1 1 2 3 5 8 13 21 34 55` 的**递增**数列,即从第三个数开始,后一个数字是**前两个数字之和**,保持此规律无限递增... ![go-f...阅读全文

Go语言中文网 2019-09-23 00:20:57 snowdreams1006

go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包

本篇文章是 Go 语言学习笔记之函数式编程系列文章的第二篇,上一篇介绍了函数基础,这一篇文章重点介绍函数的重要应用之一: 闭包 空谈误国,实干兴邦,以具体代码示例为基础讲解什么是闭包以及为什么需要闭包等问题,下面我们沿用上篇文章的示例代码开始本文的学习吧! 斐波那契数列是形如 1 1 2 3 5 8 13 21 34 55 的递增数列,即从第三个数开始,后一个数字是前两个数字之和,保持此规律无限递增... 开门见山,直接给出斐波那契数列生成器,接下来的文章慢慢深挖背后隐藏的奥秘,一个例子讲清楚什...阅读全文

Segmentfault 2019-09-23 12:32:40 雪之梦技术驿站

aliyun sms 非官方sdk

由于没有注意到ali官方发布到新版的golang sdk for SMS service 快实现完成完成了才发现, 索性把它实现完成,只是没有补充足够的测试. 相比官方sdk, 个人认为实现要比官方版简洁,调用优雅, 可扩展性强于官方版. description: golang version short message sender underline with ali sms service ## Installation Use `go get` to install ...阅读全文

Go语言中文网 2019-09-22 18:56:58 guoapeng

煎鱼换公众号啦。

大家周末好呀,我是煎鱼,由于现在这个公众号(煎鱼说)并没有留言功能,在互动交流方面总感觉缺了一块,一直觉得比较遗憾。 因此从今天起我将正式换到我的新号(我要煎鱼说)去开更了,欢迎大家再次关注我,新号的二维码如下: 感谢你的再次关注,如果你身边也有朋友关注了我,欢迎周知一下。 又要重新开始了,想想就激动。阅读全文

Segmentfault 2019-09-23 12:32:39 煎鱼

看看这篇拯救发际线的干货吧--警惕 Go 编程陷阱

在2019年08月17日举办的 Gopher Meetup(深圳站)活动上,来自 Bindo Labs 公司的李雄飞进行了 《Go 编程陷阱》的演讲。李雄飞,Bindo Labs 后端技术负责人,全栈工程师。从事POS/支付业务架构以及通用Web系统建设工作,主要关注New SQL/ETL/Kubernetes等领域技术发展。以下为演讲实录。前言我大概是从 2015 年开始写下第一行 Go 代码,今天主要给大家分享我这几年以来所积累的一些让我非常难受地方以及感到崩溃的一些 BUG,我希望我的这些...阅读全文

微信公众平台 2019-09-21 22:57:41 Go中国

Go语言包管理简史

包管理是Go一直被诟病做得不好的功能之一。先前版本(go 1.11之前)的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案,如glide,dep以及一些辅助工具等。 “我在生产构建中使用go get。” – 没有人这么说过。 Go语言的包管理实现可追溯到Google公司内的代码依赖管理(Google将内部所有源代码都存放在一个巨大的单体存储库中)。我们来分析一下在...阅读全文

Go微服务全链路跟踪详解

在微服务架构中,调用链是漫长而复杂的,要了解其中的每个环节及其性能,你需要全链路跟踪。 它的原理很简单,你可以在每个请求开始时生成一个唯一的ID,并将其传递到整个调用链。 该ID称为CorrelationID¹,你可以用它来跟踪整个请求并获得各个调用环节的性能指标。简单来说有两个问题需要解决。第一,如何在应用程序内部传递ID; 第二,当你需要调用另一个微服务时,如何通过网络传递ID。 什么是OpenTracing? 现在有许多开源的分布式跟踪库可供选择,其中最受欢迎的库可能是Zipkin²和Ja...阅读全文

Segmentfault 2019-09-23 12:32:39 倚天码农

Go Modules笔记

Go Modules笔记 介绍 module是go官方推出的模块管理工具,每个模块就相当于java中的一个包。 每个 module 中都包含一个 go.mod 文件,反之:没有go.mod文件,就不是一个module。 go.mod文件定义了该模块自身的 module path,同时也记录了该模块的依赖包;看下面的一个简单的 go.mod 的例码: $ cat go.mod module example.com/hello # 自己 module 的 “module path” go 1.12 ...阅读全文

Segmentfault 2019-09-23 12:32:37 大爬虫

分享一门非常好的新手入门课程《Go语言从入门到实战——简明高效的Go语言实战指南》——推荐分享

​课程亮点1. 讲师蔡超,曾任亚马逊(中国)和惠普的首席软件架构师,精通 Go 语言和多门编程语言,具有丰富的项目实战经验。2. 独特的学习方法:着重对比 Go 语言语法和其他其他编程语言的不同,带你快速入门 Go 语言,高效掌握 Go 语言的编程方法。3. 学以致用,注重实战:带你对 Go 语言在开发中的常见问题进行拆解分析,比如并发编程模式,常见并发任务,高可用服务设计,性能调优等难题,让你可以从入门走向实战。讲师简介蔡超目前在 Mobvista 担任技术副总裁兼首席架构师,之前的 9 年,...阅读全文

Go语言中文网 2019-09-21 01:05:42 ghgj

Go Modules 和 Go Proxy

Go Modules 简介 Go 在 1.11 版本引入了新的依赖管理模式 Go Modules,旨在解决一直广为诟病的依赖管理问题。 使用下列命令启用 Go Modules go env -w GO111MODULE=on # 不建议设为 auto 这是持久性设定,环境变量 GOENV 指示配置文件位置。 Go Modules 采用语义化版本,详见 https://semver.org/lang/zh-CN/ 。 Go Modules 的使用方法详见: https://github.com/g...阅读全文

Segmentfault 2019-09-23 12:32:38 Zack

使用 Go 连接数据库

简介 安装 gorm 启动数据库 初始化数据库连接 服务器启动时连接数据库 总结 当前部分的代码 简介 在 Go 中连接数据库的方式有很多, 这里我们选择使用 ORM 的方式,也就不用写原生的 SQL 语句了. Go 的 ORM 库也有很多, 这里选择了 gorm. 安装 gorm go get -u github.com/jinzhu/gorm 启动数据库 数据库选择了最主流的 mysql. 创建数据库的方式有很多, 为了便于清理, 选择使用 docker 创建数据库. 新建一个 docker...阅读全文

Segmentfault 2019-09-23 12:32:37 帅气猫咪

如何灵活地进行 Go 版本管理

本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能并不是很明白它的价值。 简单说下我写这篇文章的背景吧。 最近几周,Go 最重要的一则消息应该莫过 9月份 Go 1.13 的正式发布。它的相关升级可查看 Go 1.13 正式发布,看看都有哪些值得关注的特性 或官方 Go 1.13 Relase Notes。 对于一名 ...阅读全文

掘金 2019年09月20日 波罗学

如何灵活地进行 Go 版本管理

本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能并不是很明白它的价值。 简单说下我写这篇文章的背景吧。 最近几周,Go 最重要的一则消息应该莫过 9月份 Go 1.13 的正式发布。它的相关升级可查看 Go 1.13 正式发布,看看都有哪些值得关注的特性 或官方 Go 1.13 Relase Notes。 对于一名 ...阅读全文

Segmentfault 2019-09-23 12:32:37 波罗学

在Golang中使用Protobuf

本教程使用proto3版本的protocol buffer语言,提供了一个基本的在Go程序中使用protocol buffer的介绍。通过创建一个简单的示例应用程序,向你展示如何 在.proto文件中定义消息格式。 使用protoc编译器编译生成Go代码。 使用Go的protocol buffer API读写消息。 它不是一个全面的在Go中使用protocol buffer的指南,更详细的参考信息请查看前面的两个教程。 Protobuf语言指南 Protobuf生成Go代码指南 为什么使用pro...阅读全文

Segmentfault 2019-09-23 12:32:36 KevinYan

以太坊源码机制:挖矿

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 miner.start()miner即矿工的意思,矿工要做的工作就是“挖矿”,挖矿就是将一系列最新未封装到块中的交易封装到一个新的区块的过程。学习以太坊挖矿之前,我们要先搞清楚几个概念: 拜占庭将军问题分布式系统的状态同步问题。 拜占庭帝国繁荣富饶,周边的几个小国家的将军对其垂涎已久但又各自心怀鬼胎。他们必须有超过一半以上的将军同意进攻拜占庭并且不能在战场上做出背叛的动作(达成共识),否则就会进攻失败,引火烧身。而将...阅读全文

Segmentfault 2019-09-23 12:32:36 链客