在 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 兼容性,所以选择了 [])

对比三款 Go Playground:你喜欢哪款?

曾几何时,语言的在线运行(Playground)似乎成了标配。确实,Playground 能够让我们可以快速试验一些想法。Go 语言在发布之初就提供了一个,这就是 https://play.golang.org。然而,由于众所周知的原因,我们访问不了。为了方便国内广大 gopher,我搞了一个国内镜像:https://play.studygolang.com,尽情使

GoUI:一个非常简单的 GUI 框架

最近,我一直想开发一些桌面(主要是 Windows,但也可以考虑 MacOS 或 Linux)应用程序。虽然 Go 不是开发 UI 应用程序时首选语言,但是该语言的简单性和健壮性仍然使它成为我的首选语言。是的,这是我的锤子(hammer)… 但这是一个该死的漂亮锤子。 以前,我曾将 Ebiten 图形库用于 Go,以便与孩子们一起编写一些游戏。但是,对于一般的“应用程序”开发(即需要“小部件

Go 源代码中的复活节彩蛋

前言 前段时间,我在某个 Slack 工作区与朋友聊天: 朋友:“有人知道为什么time.minWall 的默认值是 1885 吗?” 我:“不知道,也许是从《回到未来 3》那一年开始的?” 我那么说基本是在开玩笑,因为我也不知道为什么将其设置为 1885 年。尽管其背后的事实与我在 Go 中的日常编码没有任何关系,但我还是情不自禁地询问了幕后花絮。我在团队聊天中问了我的同伴 Gophers,但似乎没人能找到

GoLand 2020.2 Beta 版发布:go.mod 升级以及对泛型的实验性支持

GoLand 2020.2 达到 Beta。这意味着我们将结束一连串的新功能开发,将重点转移到完善我们已经完成的工作上,并开始计算发布日之前的日子! 与我们的“抢先体验计划”版本相比,该测试版非常稳定,但请记住,可能仍然在某处存在 Bug。 同样请注意,此 Beta 版本是 EAP 周期中的最后一个版本,不需要订阅即可使用(如果您只是想尝试 GoLand,请尝试)。测试版通常会在发布候选版本之后出现,一旦我们发现该版本足够好并且可以在您的计算机上安装了。 在此发布周期中,我们为即将推出的 GoLand 2020.2 打包了 Go 模块的新功能,更好地呈现了代码中可能存在的问题和薄弱环节,提供了新的代码检查功能以及新的代码编辑功能,例如期待已久的 “Add Caret Per Selected Line”,改进了后台流程,使其更透明,更快,更多! 让我们来看看即将发布的版本中的新功能。选择您感兴趣的主题,或浏览整个博客文章以了解每个新功能。 Go Modules Generics a.k.a. Type Parameters Code Editing Code Inspections Take Variadic Arguments Under Сontrol References from Comments Save Projects as Templates Under the Hood Processes Version Control Go Modules 支持 GOMODCACHE 环境变量 从 Go 1.15 开始,可以使用新的 GOMODCACHE 环境变量将 Go Modules 缓存的默认位置从 $GOPATH/pkg/mod 更改为另一个文件夹。 为此,只需在 “Preferences/Settings | Go Modules | Environment” 设置 GOMODCACHE 即可。 IDE 将识别自定义位置,并将其用于具有依赖关系的所有后续操作。同步依赖项快速修复程序(可通过 Alt + Enter 实现)会将依赖项下载到 GOMODCACHE,外部库也将在新的自定义位置显示依赖项。 升级 go.mod 文件 行注释(在 Windows/Linux 上为 Ctrl + /,在 macOS 上为 ⌘ + /)可用于 go.mod 文件。 现在,当您键入 replace,exclude 和 require 语句的左括号时,GoLang 立即自动为你添加右括号。 泛型(又称类型参数) 6月16日,Go Team 宣布了泛型(也称为类型参数)设计草案。请访问 Golang 文档以获取有关该概念的完整详细信息 。 这是一个重大的发展,因此我们立即着手增加对它的支持。GoLand 2020.2 Beta 提供了对泛型的实验性支持,您可以通过在 Settings/Preferences | Go 启用对泛型的实验性支持。 此初始支持提供语法高亮显示和基本参考解析,并且仅在 go2 文件中有效。 请注意,有关泛型的工作仍在进行中,我们目前尚无法提供全面的支持。 尽管如此,请分享您的体验和您可能有的任何建议。它确实可以帮助我们完善到目前为止已完成的工作,因此我们可以使其可靠并使用更高级的功能进行填充。 代码编辑 想要将快速修复的结果应用于代码之前预览其结果,请使用 Alt + Enter 快捷方式调用显示上下文操作,选择所需的快速修复,然后在 macOS 上按 Alt + Space 或在 Windows 和 Linux 上为 Ctrl + Shift + I。 新的“按选定的行添加插入(多行操作)”操作会在每个选定行的末尾插入,并取消选择这些行。在 Windows/Linux 上使用快捷键 Alt + Shift + G 或在 macOS 上使用 ⌥ + ⇧ + G 调用它。 在 Preferences/Settings | Editor | Code Style | Go | Wrapping and Braces 中为调用参数,函数参数和复合文字元素配置换行。或者,您可以使用 Alt + Enter 键,调出 Put arguments on separate lines 和 *Put arguments on one line,*以手动拆分和合并元素。

对 gRPC 的 Rust 和 Go 版本进行基准测试

背景 如果你计划构建可靠,内存安全 ,高性能的应用程序,那么 Rust&Go 无疑会是你的选择。 如果您希望从内部应用程序中获得更高的性能,则可能还需要考虑使用 gRPC 而不是普通的 REST API。所有这些都是减少您的计算开销的解决方案。 我尝试比较各种库以了解它们的性能,并希望对你有所帮助。 关注的库 tower-grpc (Rust) 高性能 rust 库,尽管已被 tonic 替代 grpc-go (Golang) grpc 的官方 Go 模块 grpc-rust (Rust) 仍在开发中,另一个 rust grpc 库。看起来

从签名售书说起

上周通过公众号对外公布新手开卖后,有人想要签名版。由于双作者,涉及到双签,知道可能会很麻烦,但第一次,也有可能是最后一次,和煎鱼沟通后决定搞搞。 大概谈谈我们的操作过程。 1、编辑帮我们买书,104 本;也是想办法弄到了当时最便宜的价格; 2、寄到我家里。周六、日分批到的,去封皮签名,大部分还写了一些 Go 箴言,但还有 26 本周末没到; 3、弄好后寄到深圳。用什么快递也是有讲