惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
WordPress大学
WordPress大学
T
The Exploit Database - CXSecurity.com
博客园_首页
MyScale Blog
MyScale Blog
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
M
MIT News - Artificial intelligence
Microsoft Security Blog
Microsoft Security Blog
F
Full Disclosure
V
V2EX
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
S
Secure Thoughts
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Webroot Blog
Webroot Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Martin Fowler
Martin Fowler
PCI Perspectives
PCI Perspectives
S
Security @ Cisco Blogs
Recorded Future
Recorded Future
Help Net Security
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
AI
AI
Microsoft Azure Blog
Microsoft Azure Blog
K
Kaspersky official blog
G
GRAHAM CLULEY
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
CERT Recently Published Vulnerability Notes
U
Unit 42
T
Tor Project blog
Cloudbric
Cloudbric
Hacker News - Newest:
Hacker News - Newest: "LLM"
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

文章列表 on polarisxu

通过一个例子让你彻底掌握 Go 工作区模式 这道题正确率竟然只有 22% Go 开源项目推荐:一个简单的 Go 练手项目 go test 如何禁用缓存? Go1.18 快讯:constraints 包被移除标准库 跟着 Go 作者学泛型 「2022 版」轻松搞定 Go 开发环境 鹅厂小哥用行动反对加班:程序员加班能被终结吗? Go 为什么选择 Gopher 作为吉祥物? 本地如何配置多个 GitHub/Gitee 账号? 为 Java 开发者准备的 Go 教程 02:Java 有而 Go 无 GitHub 发现了 studygolang 项目依赖的漏洞 Typora 宣布收费后,这款开源 Markdown 编辑器火了 为 Java 开发者准备的 Go 教程 01:漫游了 我的 2021 年终总结 泛型版 singleflight:Go 中如何防止缓存击穿? 2021 年你写了多少代码?这个 Go 工具帮你统计 Go1.18 新特性:TryLock Go 泛型入门教程 程序员瑞士军刀:各种结构的转换工具 终于有 Go 版的 Elasticsearch 了 Go泛型系列:maps 包讲解 Go 1.18 中的 any 是什么? Go1.18 快讯:新的 IP 包 Go编程模式:详解函数式选项模式 Go泛型系列:slices 包讲解 Nginx 竟然也有 playground — Go 语言构建的 Go泛型系列:Go1.18 类型约束那些事 Go1.18 快讯:Module 工作区模式 Go1.18 快讯:新增的 Cut 函数太方便了 Go1.18 快讯:废弃了这个 API Go1.18 快讯:新增字符串 Clone API Go:如何获得项目根目录? Go 如何获取和设置环境变量 重磅变动:更快找到微信公众号里的Go文章 Go 这样设置版本号:我们的项目也可以 假期结束,推荐 2 本 manning 出的 Go 图书 Go Fiber 框架系列教程 04:测试应用 Go Fiber 框架系列教程 03:中间件 Go泛型系列:提前掌握Go泛型的基本使用 推荐一个 Go GUI 实战项目 Go Fiber 框架系列教程 02:详解相关 API 的使用 Go Fiber 框架系列教程 01: 和 Express 对比学习 Go Module:私有不合规库怎么解决引用问题 Go1.17 新特性:go get 变了 Go1.17 新特性:testing 包的相关变化 StackOverflow 上关于 Go select 死锁的问题 新书推荐:用 Gin 框架构建分布式应用 Go 官网要变天。。。 Gin 这是要成为 Go 官方框架? 扬眉吐气:刚刚,Go 已经默认支持泛型了 Go 1.17 新特性:Module 有哪些变化? Go 第三方库推荐:类型转换如此简单 担心密码提交到 GitHub?建议使用这个 Go 开源工具 Go 的时间格式化为什么是 2006-01-02 15:04:05? GitHub 为 Go 社区带来安全支持 Go开源项目推荐:500行代码确认请求时间花在哪 一道关于 len 函数的诡异 Go 面试题解析 厉害了我的 Go:推荐系统都有开源实现 Go1.17 新特性:新版构建约束 这个工具真好:看看你的Go项目依赖有无漏洞 网友很强大,发现了Go并发下载的Bug Rust 劝退系列 09:函数 Go项目实战:一步步构建一个并发文件下载器 这本 Go 新书挺期待的:100 个常见错误 Go 启用新的官方问答社区 这是要干嘛?!微软招 Go 编译器全职开发人员 Go1.17 快报之标准库越来越注重易用性 Go1.17 新特性之切片变数组 回顾 Go 官网的演变史 站长8年前的Go代码竟然进入大厂的项目里了 Go图书翻译:一个好消息,一个坏消息 不怕烂尾!决定组织翻译这本 Go 图书 Rust 劝退系列 08:模式匹配 一本花了2.5年写成的Go免费在线图书 被黑惨了:一句话,说明自己会 Go,咋整? Go1.16 中的新函数 signal.NotifyContext 怎么用? Go 1.17 新特性提前学之测试执行随机化 Rust 劝退系列 07:流程控制 官方的 Go 多版本管理:使用和原理 Rust新书:给你一个劝退的理由 周刊题解:常量表达式这个规则应该了解下 盘点那些使用 Go 语言的国外公司 编写了50万行Go代码是一种什么体验 Rust 劝退系列 06:常量 Uber 使用 Go 的规模这么大?!都自己定制的 Go 编译器了 Go Team Leader — rsc 大神新开源了一个库,增强模板功能 再一次看到了 Go 的节制:int128 类型要不要支持? Rust 劝退系列 05:复合数据类型 「卷」有理论依据:海勒姆定律—Go又是怎么卷的 Go 真的也可以进行 GUI 开发:还有这样的图书呢 Rust 劝退系列 04:基本数据类型 我的 Go 语言书单 Rust 劝退系列 03:变量 我又来推荐免费 Go 新书了:一本用 Go 讲架构的书 注释竟然还有特殊用途?一文解惑 //go:linkname 指令 这个功能,公众号、微信群会不会被玩坏? 一道 Go 闭包题,面试官说原来自己答错了:面别人也涨知识 Rust 劝退系列 02:第一个 Rust 程序 Rust 劝退系列 01:打造开发环境
10 年 Java 经验者:你应该尝试 Go 的 7 个理由
2021-02-05 · via 文章列表 on polarisxu

本文作者是一位工作了 20+ 年的工程师,其中 10+ 年使用 Java,7+ 年使用 C#,最近 3+ 年使用 Go。文章的观点是作者的个人总结,提倡你尝试并使用 Go 语言。目前作者已经不使用 Java 和 C# 了。

原因一:开发速度

如今,当我要编写一款软件时(我肯定可以用上面提到的三种语言编写它),我将始终选择 Go。

因为我可以花较短时间用 Go 开发完,而且代码更具可读性,不那么抽象,更“切合实际”。

在编写 Go 代码时,您所做的正是您应该做的。编写的代码基本就是“生产级别”代码。你不是在编写类,子类,getter,setter 和一堆代码,实际上这些都没做。当你编写 Go 代码时,你在编写代码,这可以完成某些工作。您不是在为“代码本身”编写代码。(polarisxu 注:意思是说,写的代码都是完成任务核心的代码,而不是一堆无关的代码,比如 getter/setter 之类的就是和完成任务不相关的代码)。

最终,你将减少编写代码的时间,并减少对代码工作的思考,因此开发的速度将蒸蒸日上。

旁注:从我的个人经验来看,用 Go 编写的代码从这三种语言中读起来最简单。我已经对此进行了测试。我曾经用他们最好的技术用 C#,Java 和 Go 编写过一个软件。然后,我问了三个同事一个简单的问题:“这段代码在做什么?”。它们在 Java 和 C#(现在是 PHP 开发人员)中迷失了,但是他们从 Go 代码中看懂了。

原因二:部署速度

这是我个人最喜欢 Go 的第二点。我倾向于实时修改。我希望修改后能立即看到修改的结果。

Go 代码的构建速度如此之快,我可以根据需要进行多次更改,这没有问题。而且我不在乎项目有多大。

想为三个主流操作系统(Win、Linux、Mac)部署二进制文件吗?小菜一碟。

原因三:只有一种方式

在数月或数年后看之前的代码,你将不胜感激。根据创建者的决定,Go 代码采用相同的格式设置。这意味着你将几乎理解任何 Go 代码。

例如,作为 C#开发人员,你大约有 7 种不同的方式将整数转换为字符串。你可以通过更多选择来做很多其他事情。

你是否可以想象,如果将所有这些“不同的处理方式”结合起来,例如将整数转换为字符串,那么你将拥有多少种不同的代码?我在理解其他开发人员的 Java 和 C# 代码时仍然遇到问题,但是即使当时我还不知道的Go代码在做什么,却可以立很容易看懂。

Go 的简单性是它的优势之一,随着时间的流逝,您一定会喜欢这点。

原因四:二进制大小

作为开发人员,你应该始终尝试拥有尽可能小的二进制文件。较小的尺寸意味着更快的部署。较小的尺寸意味着较少的网络传输。越小越好。

在我们公司中,我们将 Docker 用作运行时环境,因此我们将软件“打包”到 Docker 映像中。 Docker Hub 存储库中有大量映像,因此我们可以轻松比较它们的大小。当然,无论使用哪种语言,我们都会使用最佳技术来使镜像尽可能小。

我们不在 Docker 中使用 Java,因此抱歉,在这里无法进行比较。

但是我们使用 C# 和 Go,所以比较相同的功能。

C# 镜像 40+ MB Go 镜像 3+ MB

你可以在本文 中了解更多信息。

原因五:标准库

当我们开始使用 Go 时,我们开始搜索库。因为你需要库来执行其他操作,对吗?

在 Go 中,它具有令人难以置信的标准库:stdlib。你仅使用标准库就可以编写几乎所有内容。更少的库(这里是模块)意味着您需要寻找的第三方代码也更少。我在这篇文章 中写了这个。

原因六:Goroutine

这是我们所有人的最爱。我们正在开发基于网络的软件。与该设备的通信,与该设备的通信,与…的通信,你明白了吧。我们希望在所有这些设备之间进行区分。

这意味着,线程是我们在软件中经常使用的东西。如果你曾经使用过线程,也许你会记得,你是如何学习的以及必须要做的工作。(polarisxu 注:比如 Java 怎么开线程,你知道吗?)

在 Go 中,如果要在“线程”中运行 function(),只需在其前面添加 go,即像 go function() 这样。

就这样。当我第一次看到它的时候,我就像:“就这样吗?”。是的,仅此而已。

另外,您是否知道,默认情况下,一个 Java 线程分配大约 1MB 的内存,C# 线程也分配大约 1MB 的内存,但是 Go 的 goroutine 仅分配大约 2kb 的内存?那有多棒?!

原因七:Web Server

这是一瞬间的爱,特别是对我来说。你可以使用下面的代码运行一个简单的 Web 服务器,侦听 80 端口。

然后将你的 html,css 和 javascript 文件放入 data 文件夹中,就可以了。

package main

import (
	"github.com/julienschmidt/httprouter"
	"net/http"
)

func main() {
	router := httprouter.New()
	router.ServeFiles("/data", http.Dir("data"))
	_ = http.ListenAndServe(":80", router)
}

如果你想看完整的教程,这篇文章 适合你。

注:我主张使用标准库,在这里,在此 Web 服务器示例中,我实际上是在使用第三方库。

原因很简单:我一直都在使用它,但我错误地将其视为标准。下面是没有第三方库,实现相同功能。

package main

import (
	"net/http"
)

func main() {
	http.Handle("/", http.FileServer(http.Dir("./data")))
	_ = http.ListenAndServe(":80", nil)
}

总结

当我第一次了解 Go 时,我并不感兴趣。我以为,我使用的已经是世界上最好的语言了(即 Java 和 C#),并得到了大公司的支持。(polarisxu 注:世界上最好的语言不是 PHP 吗?哈哈哈哈)

但是后来我读了一些有关 goroutine 的东西。它吸引了我的注意。当我看到运行 Web 服务器有多么容易时,我就迷上了。我开始使用 Go,从此无法回头。 Go 成为我最爱、最常用的语言。

所以,我建议您尝试一下。

你会惊讶于你的生产力。

本文作者:Petr Jahoda

原文链接:https://itnext.io/7-reasons-you-should-try-use-go-5fb4714015d1