Java程序员不喜欢Golang的地方

我不喜欢Go语言的十个理由 链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go 语言有多火爆?国外如 Google、AWS、Cloudflare、CoreOS 等,国内如七牛、阿里、知乎等都已经开始大规模使用 Go 语言开发相关产品,可以说它是近来风头最盛的编程语言之一。但再好的编程语言也不会是完美的编程语言,本文作者 Lawrence 使用了三年 Go 语言,并在这三年间参与了几个大型 ... 阅读详情

我爱Go。从我开始使用这种语言的第一天起,我就迅速爱上了它。它提供了令人难以置信的简单性,同时保持了出色的类型安全和快如闪电的编译。它的执行速度非常快,并发性是一流的(这是一种轻描淡写的说法),标准库有大量的高级接口,可以用很少的依赖性来启动任何应用程序,它可以直接编译成可执行文件,我可以继续说下去。尽管与其他C语言相比,Go的语法文字主义需要一些时间来适应,但在使用了一段时间后,感觉非常直观。

我的背景是Java,但对C、C++、JavaScript、TypeScript和Python都有丰富的经验。Go是我学习的第一种语言,我希望在任何地方都能用它来做任何事情。虽然我讨厌 "产品杀手 "这种陈词滥调的概念,但作为一个曾经是专业的Java开发者的人, Go感觉就像是一个Java杀手 。我认为Java会消失吗?可能不会。我认为Go会在流行程度上超过Java吗?不太可能。然而,对我个人来说,我无法想象在任何情况下(除了维护大到无法重写的传统产品),我宁愿使用Java而不是Go。

说到这里,你可能会想,"这篇文章不是应该讲你不喜欢Go的地方吗?" 这是一个完全公平的问题,我正要回答这个问题,但重要的是要了解我有多喜欢Go,才能理解我为什么要抱怨它。那么就不多说了,到底有什么可批评的呢?

库函数会修改其参数

我对Go的第一个抱怨是我马上就注意到的。许多内置的库函数修改它们的参数而不是返回新的结果。修改函数参数模糊了输入和输出之间的界限,最终破坏了代码的表现力。一个函数的表现力是指它通过其签名清楚地传达意义和意图的能力;意义传达得越清楚,这个函数的表现力就越强。表达性是可维护代码的最重要方面。显然,有些时候性能比表现力更有利于程序,但从可维护性的角度来看,表现力应该始终是优先考虑的。

那为什么Go会这样做呢?通过修改参数而不是返回新数据,Go编译器可以更好地跟踪特定变量的生命周期。Go是一种垃圾收集(GC)语言,所以任何时候函数返回一个指针或由指针支持的类型(例如一个片断),都会增加内存需要在堆而不是栈上分配的可能性。堆分配需要垃圾收集,而垃圾收集会占用你程序中宝贵的CPU周期。

避免堆分配--从而减少垃圾收集--绝对可以提高一个应用程序的性能。这些优化可能有利于渲染高FPS图形的软件,但对于大多数企业应用和日常服务来说,很可能对终端用户的好处几乎是无法察觉的。

一个合理的论点是,一种语言应该尽量减少其自身库的开销,但是当速度和易用性是相互竞争的目标时,需要优先考虑一个目标。已经有很多语言为高性能的使用场景提供了显式内存管理(C、C++、Rust等),那么Go真的应该为了提供更少的GC周期而牺牲其最大的优势之一(易用性)吗?

作为一个开发者,我希望至少能有一些更有表现力、更直观的替代品,在功能上与优化的API相当。尽管有这样的烦恼,Go远不是唯一犯了这样错误的语言,事实上,许多违规的Go函数都有几乎相同的Java和C++对应物。然而,仅仅因为有其他语言的先例,并不意味着Go应该无可指责,最终,这是我不喜欢这种语言的地方。

为了挽回一些分数,可以说要求用指针作为参数是Go语言请求修改的一种表达方式。对于这一点,我将承认几点,尽管我仍然没有找到一个令人信服的方法来用slice这么做(而slice往往是这个模式用的最多的)。

泛型

Go 1.18引入了泛型,所以我有点被宠坏了,因为我只需要等待几个月就可以得到这个功能¹,而许多资深的Go开发者已经等待了好几年。Go的泛型实现感觉有点像TypeScript的,在大多数情况下,这是件好事。与TS一样,开发者可以很容易地约束泛型,使其符合几种可能的已知类型或接口。但与TS不同的是,Go不必处理JavaScript的包袱,特别是围绕着未定义和null。

说白了,我喜欢泛型作为一种语言特性。如果使用得当,它们可以提高代码的可重用性,从而提高一致性并降低错误的风险。当我说我不喜欢Go中的泛型时,我的意思有两点:第一,Go对泛型的实现还有很多需要改进的地方;第二,长期以来语言中缺乏泛型,导致许多丑陋的反模式埋藏在许多库的表面,包括Go的标准库。

解读第一点, Go目前不支持方法或结构域的泛型 。对方法的不支持有点令人费解,因为在引擎盖下,Go将方法视为以接收者为第一参数的函数。如果函数支持泛型,为什么方法不支持呢?Go对嵌入的支持降低了泛型结构字段的关键性,因为很多泛型的用途都可以用嵌入来模仿:只要把 "非泛型 "字段放在一个单独的结构中,然后把同一个结构嵌入几次就好了。然而,嵌入并不是一个完美的替代品,因为操作和方法需要针对外部结构的每一种变化进行重新实现。Go可以通过允许泛型结构字段来将这一责任转移给编译器,而不是开发人员,但现在我们还只能复制和粘贴。

由于Go中目前缺少泛型的地方,许多数据结构的实现不得不使用反射、类型检查和铸造等黑客的变通方法,以提供对不同类型的广泛支持。这让我想到了第二个抱怨。Go作出了类型安全的承诺,然后立即在其标准库中通过使用伪通用的变通方法:interface{}来破坏它。Go的空接口用法不仅是一种反模式的缩影,而且类型检查和反射往往是较慢的操作(讽刺的是,这与我之前抱怨的表达能力对速度的权衡是不一致的)。最糟糕的是,第三方库也大量采用了空接口的反模式,所以即使Go最终将其所有库迁移到泛型,这种模式也可能在许多代码库中存在相当长一段时间。

make()函数

make()函数是Go的 "原始类型 "初始化解决方案。大多数基元都有一个合理的零值,但在Go中,map、slices和channel都是受益于动态初始化的基元类型。使用map和slices的零值是完全可能的,有时甚至是合理的(例如JSON操作和避免nil返回),但对于大多数情况,make()是最好的选择。我对make()有异议的地方是,它存在我已经说过的两个问题。

首先,make()没有表现力。它的完整签名是func make(t Type, size ...IntegerSize) Type,这让我对如何正确使用它知之甚少。尽管它在技术上只是一个函数,但在Go编译器对它的特殊处理以及它对创建通道的必要性之间,make()就像for-loop一样是Go的一个重要组成部分。采用这种思路可以部分地原谅它的签名,但是提供NewMap()、NewSlice()和NewChan()函数也同样容易,甚至更容易,这样就不会产生歧义了。我不打算深入讨论这些替代方案,因为我相信对于这些选择为什么会有问题,有很多强烈的意见。但我要深入探讨的是,make()的错误是多么容易发生(看到我做了什么了吗)。

m := make(map[int]int, 10) 创建一个空的地图,分配足够的空间来存储10个条目;len(m) 返回0。看到问题所在了吗?无论是在写代码时,还是在审查代码时,都很容易不小心忽略这个重要的区别。要获得你所期望的切片行为,需要一个额外的参数:s := make([]int, 0, 10)。在这种情况下,len(s)实际上会返回0。因此,Go并没有为这些数据结构提供更具表现力的、不同的初始化器,而是提供了一个具有更大模糊性的单一函数,因此具有更大的误用风险。

在我对make()的看法上,我对它的第二个问题是它的伪通用性。Go通常不允许函数重载,但make()得到了一个特殊的通行证来假装重载。由于这个特殊的传递,make()的第一个参数可以是几种类型中的一种。它的返回类型也是如此。对于一个十年来一直声称不需要泛型的语言来说,Go不得不打破很多自己的规则,让它最核心的一个函数在没有泛型的情况下工作。对我来说,这让我感觉很草率。

扁平化的包结构

我来自Java的世界。Java应用程序往往有很多很多的包。在这个世界上,父包对于一个类的上下文来说往往和类的名字本身一样重要,所以对于Go这个 "Java杀手 "来说,拥有这样一个扁平的包结构是有点刺耳的。这并不是Go的独特之处。许多面向脚本的语言,如Python,倾向于采用更多的广度而不是深度。尽管这是一种相对普遍的做法,但我想让Go成为Java的 "直接替代品 "的梦想似乎已经破灭了。

扁平化的包结构本身并没有什么问题。一层层的空目录(或包含单个文件的目录)在没有明确设计的语言中很少提供价值--诚然,这适用于大多数不是 面向对象 的语言。然而,如果扁平语言声称要解决与嵌套语言相同的问题,那么扁平语言应该提供语义上相等的机制来管理标识符的可见性和范围。

Go通过大写字母导出标识符的简单方法非常好。在我的团队的风格公约会议上,我又少了一件要争论的事情。玩笑归玩笑,尽管我很喜欢Go开发者的这一选择,但包的语义和扁平结构的惯例削弱了这一功能对应用程序代码的潜在价值。在库代码中,导出或不导出的简单概念对于定义公共API是完美的。对于大型应用,尤其是网络服务器,这通常是不够的。

网络服务器必然会有一些从来没有被其他代码明确消费的包(除了测试),而是被外部客户和其他服务器通过HTTP等协议调用。这些包中的代码将和其他代码一样从抽象中受益,但在扁平化的包结构中,未导出的抽象将不可避免地被包中无权使用的其他区域看到。这导致了一个难题:我们应该违反扁平化包结构的惯例,牺牲可读性和重用性来换取更少的抽象性,还是干脆让未导出的标识符在它们不应该出现的地方被访问?这个问题的存在就是承认Go有问题。

当然,扁平结构是惯例而不是法律,但惯例在Go的发展过程中具有巨大的影响力,它决定了许多新的功能,并将其纳入语言。所以是的,这可能不是Go的一个明确特征,但它仍然是我不喜欢的东西,因为Go社区把它作为一个最佳实践而大力推动。

缺少lambda函数

这个问题绝对是吹毛求疵的,所以我就直奔主题了。Go并没有λ函数的简写方式。我知道有人提议使用λ函数,也有人争论为什么不需要λ函数,但尽管有这些考虑,事实是我喜欢速记λ,而Go没有。

Go的函数语法恰好是短而精的。此外,函数在Go中是类型,可以分配给变量,这对我这个喜欢滥用Java 8中引入的 "方法引用 "的人来说很熟悉。即使如此,当我用Go写作时,有时内联一个函数是解决一个问题的最合适的方法,然而即使是单行的,所产生的代码也往往是笨拙的,特别是当需要返回语句时。我不认为有人能说服我说func(x, y int) int { return x+y }比(x, y) => (x+y)更漂亮或更易读。随你怎么争论强类型或明确性,我还是会怀念速记的lambdas。

总结

对于那些还没有尝试过Go,但正在考虑使用它的人来说,不要让这些劝阻你;它是一个神奇的工具,几乎肯定会改善你的开发生活。对于现有的Gophers,我希望你能同情我的抱怨,但仍然像我一样喜欢这门语言。

第一篇:Go语言入门:Java程序员的修炼之路 panic():程序“崩溃”信号,类似 Java 中recover():从panic中“捞回来”,防止整个程序挂掉特性Java 风格Go 风格权限控制首字母大小写(大写=public,小写=private)函数附属于类独立、支持闭包、变参、作为值错误处理try-catchif err!= nil显式判断 + panic/recover指针/引用对象传引用明确使用*T和&T控制风格面向对象面向组合、轻结构、重函数Go 语言设计看似“简陋”,其实暗藏极简主义哲学—— 阅读详情

相关推荐

我用go-zero开发了第一个线上项目

作者:结冰 前言 ​ 说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。 初见golang ​ 我大学专业是软件。第一门编程语言是C++,知道了指针,知道了加减乘除,知道了编程去控制软硬件。后来选修了java,被ssh框架戏耍了一个暑假。再后来进入了一个社团技术部,再被ht

我心飞翔 3296

作为一名Java程序员,我为何不在生产项目中转向Go?

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go。随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许世伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区。 那么问题来了,业余时间好学是一回事,真正要将一个新东西运用...

java1856905的博客 1万+

OASIS协议标准文档的解读_第一部分

OASIS标准协议的文档的解读。完整原协议的中文翻译和解读。

洋葱的专栏 4903

go c c++ java,C/C++的人转Go都说用的很爽,Java转Go的人,觉得有时候写的很别扭,这是为啥?...

这是「知识星球」上一位球友提的问题。以下是我的回复。Go 和 Java 都是 C 系语言,语法方面,存在很多相似的地方。Go 语言从 C 语言继承了很多,同时也抛弃了不少,改进了不少。### Go 从 C 继承了哪些重要特性,同时改进了哪些?Go 跟 C 语言一样,语法足够简单。一些基础的语法,跟其他 C 系语言类似,从 C 继承了下来。和其他很多 C 系语言不一样的地方是,Go 继承了 stru...

weixin_32691913的博客 422

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

STM32G030C8T6 ADC+DMA实战:同时采集外部电压和芯片温度的完整代码流程

本文详细介绍了STM32G030C8T6芯片通过ADC+DMA实现外部电压和芯片内部温度采集的完整流程。从硬件设计到CubeMX配置,再到驱动模块化实现与系统优化,提供了高精度多通道采集系统的实战指南,特别适合嵌入式开发者在工业控制和环境监测项目中应用。

weixin_42653691的博客 467

为何 Go 的声明语法有点怪?(语法比较)

为什么80%的码农都做不了架构师?>>> ...

weixin_34008933的博客 1877

网卡Inter (R) Wi-Fi 6 AX201突然故障 错误代码10,无法找到无线网络,蓝牙也无效了

问题描述 说来也是坑,简直就莫名其妙。早上在工位上,电脑一切正常(一直用的是无线网络),然后周五准备开周会了,所以拔掉电脑外接设备(电源线,鼠标,外接显示器)拿起电脑到会议室。到了会议室之后,无线网断开了(但一般是不会断开的,都在公司范围内),所以选择重连,但发现已经没有无线网络列表了。 电脑机型:联想YOGA 14s 2021 初步尝试 1、关闭开始飞行模式 - 无果 2、重启并重启 (因为前两天已经提醒过有windows更新,趁这个机会就更新并重启了)- 无果 3、下载鲁大师、驱动精灵、联想驱动管

疯狂的蜗牛 5万+

为什么我爱Golang

我喜欢Go编程语言,或者有人称它为Golang。 很简单,也很棒。 我在切线上写这个。 没想到Golang会这么好。 我首先在2016年1月左右回去,那里有一个相对较小但热情的社区。 当时我并没有考虑太多,我在磨练自己的编程技能,而Golang只是我用来完成任务的工具。 甚至在一年前,使用go还是很棒的。 一旦掌握了通用语言,该过程就很简单了。 我为Visualead (我工作的公司)...

编程故事的地方 248

抓包工具:Fiddler下载、安装、使用 教程

文章目录抓包工具:Fiddler下载、安装、使用 教程一、Fiddler 下载二、Fiddler 安装三、Fiddler 使用3、Statistics 请求的性能数据分析4、Inspectors 查看数据内容5、AutoResponder 允许拦截指定规则的请求6、Composer 自定义请求发送服务器7、Filters 请求过滤规则8、Timeline 请求响应时间9、Fiddler 设置解密HTTPS的网络数据10、Fiddler 内置命令与断点 抓包工具:Fiddler下载、安装、使用 教程 Fidd

Sumarua的博客 17万+

YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强

本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。

魔改工程师的博客 676

Golang与Java各方面使用对比(下)

本文是Golang与Java对比的第二篇,主要对比Golang与Java在面向对象、异常处理、并发编程及垃圾回收方面的差异。

BoringError的博客 6525

基于FPGA的NCO实现

NCO实现原理 数字振荡器 输出频率,相位可控的正弦波,精度高,稳定性高,替代VCO,用起来方便也易于操作。 实现方式: 直接调用fpga里面的ip核,以下是IP核的配置方法: 接下来选择输出为单路还是多路: 最后生成ip核时需要注意的事项: 生成时会需要漫长的等待,因此需要如下操作: 最后成功生成: 实现代码: input clk ; input rst_n ; output [13:0]fsin_i ; wire [13:.

m0_46644103的博客 4581

作为一名Java程序员,我为什么不在生产项目中转向Go

自Google在2009年发布Go语言的第一个正式版之后,这门语言就以出色的语言特性受到大家的追捧,尤其是在需要高并发的场景下,大家都会想到是不是该用Go。随后,在国内涌现出了一批以七牛为代表的使用Go作为主要语言的团队,而许式伟大神本人也在各种场合下极力推动Go在国内的发展,于是在这种大环境下,中国的Go开发者群体逐渐超越了其他地区。\\那么问题来了,业余时间好学是一回事,真正要将一个新东西运用...

cpongo5 207

基于Simulink的电机驱动逆变器仿真

本文完成了电机驱动逆变器的Simulink多层级仿真平台搭建,实现了:✅ 构建了从理想到器件级的逆变器模型体系✅ 实现了Si/SiC损耗精确计算与结温预测✅ 建模了母线寄生参数、死区效应、栅极驱动等关键非理想特性✅ 支持故障注入与保护策略验证✅ 集成了热管理、EMI、寿命预测与碳足迹评估。

amy_mhd的博客 87

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

GO开篇:手握Java走进Golang的世界

Go简介、Go和Java的对比

健身变秃,coding变强 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南1.序言Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。1.1 为什么要学习如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很好

西代零零发 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

go语言和java比_Go VS Java:一位资深程序员对两种语言的解读

导读:对于软件开发的编程语言,其实没有万能灵药。本文作者详细介绍了他使用Java和Go这两种编程语言,一个是传统语言,一个是新兴语言的工作方式。Go VS Java实话说,我很喜欢Java这门语言。近几年来,我在公司里积累了大量关于EJB2,DB2与Oracle等后端开发的专业知识。现在我转向到基于自然语言处理的开发方向,如Spring Boot、Redis、RabbitMQ、Open ...

weixin_39784195的博客 1万+

面向 Java 程序员的 Go 教程(七)

与 Java 一样,这个社区是标准 Go 功能之外的丰富功能来源,也是 Go 开发人员培训和支持的巨大来源。像 Java 一样,Go 既有标准(包含在 Go install 中)库,也有第三方(也就是社区提供的)库。一些 Go 库处理 Go 运行时和工具集的实现,这里就不讨论了。在本书中,我们将比较 Go 和它的一些标准库与 Java 和它的一些标准库来教授基本的 Go 编程。尽管如此,所提供的功能通常足以创建丰富的 web 客户端和服务器,它们是现代微服务的基础,是一个关键的 Go 用例。

龙哥盟 1535

难道只有Java卷,Go就不卷了么?

2022年,我开始涉足技术直播和技术讲师领域,并和博文视点合作几次技术直播,直播效果还不错,再加上我孜孜不倦的布道“Spring Cloud Alibaba微服务架构实战派上下册”这本书相关的技术,并且这些技术都是有助于“技术人”快速成长的,因此也获得了博文视点颁发的“2023技术成长领路人”这个技术奖项,这个奖项也是为了鼓励我继续通过技术直播的方式给技术人去布道技术,因此只要我有时间,我就会孜孜不倦的去讲和聊技术。

huxian1234的专栏 1133

Go语言KickStart——《Java程序员学习Go》之二

在本系列的第一篇文章《Go语言概览》中,对Go语言的发展历程,以及它的优缺点进行了介绍。本文作为《Java程序员学习Go》系列文章的第二篇,将从几个例子开始我们学习Go的旅程。学习Go语言参考资料 书籍 《Go语言程序设计》,作者:Mark Summerfield 《Go Web编程》,作者:谢孟军——beego作者 官方文档 安装好Go之后,使用如下命令,启动本地Go DOC服务 godoc

熊出没注意 1102

go html template 数据怎么加减乘除_如何使用go-zero开发线上项目_Golang

前言​说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。初见golang​我大学专业是软件。第一门编程语言是C++,知道了指针,知道了加减乘除,知道了编程去控制软硬件。后来选...

weixin_42253260的博客 528

python个golang找工作_工作一个月了,谈谈如今对Go的感觉

我最早接触Go是大一下学期的时候,应该算有4年的Go语言学习吧,之所这么说,是因为这种学习完全算不上“Go语言经验”。在经历了数个月的Go语言求职经历尝试后,我终于如愿以偿找到了一份C++工作,怎么说呢,心里有各种不满,不过始终也觉得Go是个好语言,记得刚接触Go的时候这个语言给了我一种前所未有的简单体验,可能就是因为感觉很喜欢Go于是就一路学了下来。但是有些时候,兴趣无法决定一切,当你的同学大四...

weixin_39902184的博客 4003

【go语言基础】go语言开篇,2024年Golang程序员职业规划

的确使用go之后,之前的代码问题全部都没有了,但这并不是go语言的功劳,而是因为原先老的代码一团浆糊,用新的代码重构,屏弃掉了写老代码程序员的陋习,让代码更规范。Go 语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。很多大公司的项目,比如腾讯的蓝鲸平台,百度的BFE项目,阿里的CDN以及其他系统部门,京东的推送系统,云存储,以及京东商城,都在使用go。动态语言:说的是运行是改变结构,说的是代码结构。

2401_84264727的博客 1906

工作满一年的Java程序员怎么慢慢转为Go程序员?

几百万做 Java 的是不是傻子不太确定。Rob Pike 那帮人绝不是傻子而且聪明绝顶,这很确定。并发数、运行效率、内存、工具链、部署、DevOps 管理、对 coder 的心智要求,综合所有方面考虑 Java 是被 Go 完全碾压。微服务 service mesh 这些领域现在所有最重要的基础设施几乎都是 Go 实现,少量新方案用Rust。区块链 Go 也是主力。面过很多人,没有不懂 SSH ...

zuiyingong6567的博客 8224
上一篇: 软件架构图表与模式介绍
下一篇: Kafka 延时队列&重试队列
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值