终于找到了一款我喜欢的安装和管理 Go 版本的工具

一直以来,我都习惯通过源码安装 Go。我是这么做的: 1)Git clone Go 源码 $ git clone https://github.com/golang/go 2)需要安装什么版本就切换到对应的分支,比如安装 1.15.x $ git checkout -b release-branch.go1.15 origin/release-branch.go1.15 如果本地之前已经存在该分支,直接 git checkout release-branch.go1.15 即可。 3)将 go 整个目录复制到 /usr/local/go1.15,编译安装 4)创建软链: ln -s go1.15 go 之后加上环境变量等。 如果想要切换版本,只需要做类似上面的步骤,最后将 go 这个软链指向要切换的

题解:竟然半数以上的人做错了,基础真的很重要

双节发布了两道题: 题一: package main func main() { var a int8 = -1 var b int8 = -128 / a println(b) } 题二: package main func main() { const a int8 = -1 var b int8 = -128 / a println(b) } 答对的人真不多(半数以上答错了),特别是题一,一半以上竟然是 128,难道不知道 int8 能表示的范围吗?[-128, 127]。不过为什么答案是:题一 -128,题二编译错误? 其实这是一道计算机基础题。 先看看网友 Jayce 的解释:第一题是 -128(untyped const)

何时使用 Rust 和何时使用 Golang

Golang 和 Rust 之间有明显的区别。Golang 更加注重构建可以无限扩展的 Web API 和小型服务,尤其是在 goroutine 的强大支持下。Rust 也可以用于小型服务,但是从开发人员的经验来看,事情要困难得多。 Rust 非常适合处理大量数据和其他 CPU 密集型操作,例如执行算法。这是 Rust 超过 Golang 的最大优势。要求高性能的项目通常更适合 Rust。 在本教程中,我们将就 Golang 和 Rust 进行比较和对比,评估这两种编程语言的性能,并发

15 张图带你深入理解浮点数

大家好,我是站长 polarisxu。 团队一直保持着分享的习惯,而我却分享的较少。忘了当时同事分享什么主题,涉及到浮点数相关知识。于是我决定分享一期关于浮点数的,而且 Go 之父 Rob Pike 说不懂浮点数不配当码农。。。So?! 本着「要学习就系统透彻的学」这个原则,本文通过图的方式尽可能详细的讲解浮点数,让大家能够对浮点数有一个更深层次的认识。 本文目录: 0、几个问题 开始之前请

这么一道“简单”的题,为什么结果出乎我的意料

今天在《Go语言爱好者周刊:第62期》 中贴了一道 Go101 的题,原题如下: package main const s = "Go101.org" // len(s) == 9 // 1 << 9 == 512 // 512 / 128 == 4 var a byte = 1 << len(s) / 128 var b byte = 1 << len(s[:]) / 128 func main() { println(a, b) } 答案是 4 0。 不少人对这个结果应该很吃惊,因为从答题结果看,不到一半的人答对了。而且,如果只给 var b byte = 1 << len(s[:]) / 128,没有 a 对比,我想答对的人会更少。因为有对比,很多人虽然直觉是 4 4,但想到一定有陷阱,所

如何在调试过程中查找 Goroutine

Goroutines 是大多数用 Go 编写的程序的重要组成部分。但是,使用大量 goroutines 会使程序难以调试。那怎么办?在此博文中,我们将介绍如何使用自定义数据为 goroutine 加上标签,这是 GoLand 2020.1(现已包含在 EAP 中)的最新功能之一。 目录 在 IDE 下使用 在命令行下使用 性能影响 使用自定义库启用调试标签 让我们以向 Web 服务器发出请求的应用程序为例: package main import ( "io" "io/ioutil" "math/rand" "net/http" "strconv" "strings" "time" ) func fakeTraffic() { // Wait for the server to start time.Sleep(1 * time.Second) pages := []string{"/", "/login", "/logout", "/products", "/product/{productID}", "/basket", "/about"}

在 iOS 和 Android 上运行 Go 代码

在本教程中,我们将构建一个简单的 Go 包,您可以从 iOS 应用程序(Swift)和 Android 应用程序(Kotlin)运行该软件包。 本教程不会使用go mobile 框架。相反,它使用 Cgo 构建可导入到您的移动项目中的原始静态(iOS)和共享(Android) C 库(Go Mobile 框架在后台进行此操作)。 构建 在本教程中,我们将创建具有以下结构的简单 monorepo: . ├── android/ ├── go/ │ ├── cmd/ │ │ └── libfoo/

观点:Go 尚未准备好用于企业系统,原因在这里

译注:发表这篇文章,不代表我认同作者的观点。大家都知道,在国内,Go 已经被很多大厂使用,早就可以用于企业系统。 对一门语言的爱,可以接受任何不同的观点,真理总是越辩越明,相信有不同的声音,Go 也会越来越好。欢迎大家留言发表你的看法。 介绍 企业应用程序是一个寿命长、可靠的系统,具有多年的持久数据。如今,Golang 的世界并没有提供以企业系统构建方式构建系统的可能性

Google 的核心数据解决方案团队是如何使用 Go 的?

关于 Google 的核心数据: Google 是一家技术公司,其使命是组织全世界的信息,并使其普遍可访问和有用。 在这个案例研究中,Google 的核心数据解决方案团队分享了他们的 Go 旅程,包括他们决定在 Go 中重写 web 索引服务,利用 Go 的内置并发性,并观察 Go 如何帮助改进开发过程。 Google 的使命是“组织世界各地的信息,并使其普遍可访问和有用。” Google 的核心数据解决方案团队是负责组织该信息的团队之一。除此之外

关于 Go 语言泛型设计的最新进展和一些问题的说明

前段时间 Go 官方发布了新的泛型草案,一时间在社区引起了很大的反响,各种关于泛型的文章、讨论涌现出来。8 月 21日 Ian Lance Taylor 在 golang-nuts 讨论组总结了泛型设计的最新进展和一些问题的说明。 Go Team 在经过多次讨论并阅读了许多评论后,计划对泛型设计进行一些更改并澄清草案的一些问题。 1 泛型语法极有可能使用方括号 [](不用 <> 是因为和比较运算符大于、小于冲突,为了保持 Go1 兼容性,所以选择了 [])