GO的语言特性是什么?Go语言到底好不好用?

【云原生 37】Docker快速部署编程语言Golang_docker go运行环境 🏅云计算领域优质创作者🏅。 阅读详情

真的很好用啊。

个人认为GO最重要的一个语言特性就是KISS(保持简单和愚蠢)。这个特性看似简单,实则是解决当代和未来软件工程问题的一项非常必要的特性,具体原因下面细说:

Go背后的设计思想是现代编程的“保守派”思绪,它的产生是因为像谷歌这样的工程团队已经开始遇到一些非常棘手的问题而在现有编程语言框架下不能很好地解决。因此他们决定去创新,用一种退步”的思想去面对软件开发领域的大量新问题,这种“以退为进”是其最大的哲学思辨,也是能否Get到它的好用的最核心一点。

科技主导的进步论是今天社会的主流信仰,在软件开发的世界里面也是如此。毕竟计算机编程是最近30年主导创新的最重要的科学和技术基底层,所以这个领域内充斥着进步论应该是很好理解的。

进步论具体怎么体现呢?比如你去学习Node.js,那种激进的、灵活的社区文化开始会让你很燃、很兴奋,然而过一段时间以后,尤其是你自己经历的项目多了以后,你会发现过于激进有时候=“聪明反被聪明误”。这种不够谨慎的“唯技术进步论“思想现在在开发领域很常见,比如在很多现代编程语言里面,为了实现一些技术性的突破,会发明一些语言级别的新语法,而这些语法又与语言以前的一些语法逻辑相互矛盾或者无法兼容(比如为人熟知的Python的2、3不兼容问题、JS的ES6改革引起的浏览器兼容问题等等)。

与进步论相互呼应的,就是开发思想的分化。比如,现代编程里面,一个简单的函数往往都有多种实现方法。这些方法有些是因为计算机执行上有本质的不同(这是一种非常合理的不同,GO这种奉行简单的语言也会支持这些不同);而更多的不同完全都是基于语法、习惯、思维方式等方面的差异,某些时候一种函数甚至有数十种实现方法,到了让人抓狂的程度。

方法多、思路宽初看是好事儿,但从长远看它只是满足了人们思维的贪欲,对提高效率或者解决问题没有多少实质性的帮助。因为,几乎所有的应用都只是在解决有限问题,而随着项目和公司的发展,参与软件编写的人会越来越多,因此软件所要包容的思想也就越来越多。这样一来,大多数软件开发面临的中长期问题都变成了「由于软件越来越复杂而导致工程难以维护」这个问题。

说到这里,基本解释了Go的好处是「保持编程的简单和愚蠢」,下面总结一下。第一,这个好处需要对比才能感觉到;第二,这个好处需要一些经验和反思才能体会到。总之,这个好处不那么容易被初涉此道的人明显地感觉到,而对于另外一些有经验的人则会感受强烈,这也就是为什么很多活跃的Go开发者都是掌握多种语言的老鸟的原因。而另一方面,这个好处是直指现代软件工程的一些核心问题的,因此我认为时间和历史会证明Go的高明(“低明”?)之处。

另外,为什么这种简约的思想会招致一些非常明确的反对声音呢?我认为有两类原因,一类是人云亦云的思维惯性,如果你基于过往的经验来看待一个新事物,给它挑挑毛病其实是一件很简单的事情,但是瑕不掩瑜,这些毛病与其带来的好处相比,大都不是很重要的。或者说,随着时间的推移,都是可以被明显改善的。

另一类是“思想背后的利益”在作祟。在现代软件工程师的文化圈子里面,存在一些利益“山头”,也就是由于一些人把大量精力注入到某些编程语言、工作流当中,这些已经给他们个人或集团带来了大量的既得利益(财富方面的、社会影响方面的……),因此他们会自觉不自觉地捍卫自己的利益——通过各种对比来贬低Go语言,或者夸大一些问题。这一方面充斥于大量校园、培训机构里面,另一方面已经成为了很多大型互联网企业内的政治势力或者既得利益集团。只要去稍稍了解一下为了面试BAT、谷歌、亚马逊的那些职位要预先读多少书、考多少试题就不难感受到这些山头的实在性。

总结KISS(保持简单和愚蠢)的好处
下面我从“保持简单和愚蠢”为什么未来对一个工程师来说整体上是一件好事来总结一下。首先,如果你是最近几年才开始接触计算机编程,而不是从几十年前就开始学习编程的老司机的话,那么你要面对的现实有如下几个要点:

1、现代的编程经过几十年的发展,其知识体系已经变得非常庞大而复杂
2、现代的计算机硬件架构也与几十年前相比发生了巨大的变化
3、应用和软件的需求变得日趋复杂
4、项目团队的组成和工程师的思维愈发多元化
5、人的认知能力有限,而且绝大多数人都没有那么聪明

为了面对这这些问题,绝大多数编程语言选择的道路都是激进地改革,它们选择在语言层面进行「创新」,制造很多新的语法、加入很多新的概念。前文已经提到了这种激进思想导致的后果 —— 你除了要学习编程语言本身外,你还需要学习很多额外的“思想”,问题变得越来越复杂。

事实上,我个人认为学习很多语言难以深入某种程度上都是因为那些额外的“思想”太复杂或者太难以理解。我个人对学习Java和Scala时读那些规矩的痛苦记忆犹新。那些厚重的宝典里面,记录的不仅仅是聪明的编程思想,还有很多“你要当心”的思维规则限制。有时候,一个那样的规矩会让你学习编程完全卡住,因为你搞不明白为什么要这样,然后就会有一些沮丧——怀疑是不是自己太笨了,怀疑是不是自己“基础不好”还得恶补。

这时,如果你去问那些老鸟们这是怎么回事。由于幸存者偏差,以及只有成功者愿意分享经验之类的规律,你听到的都是那些绕过了或者渡过了这些坑的人的观点。他们大多数可能都并没意识到自己是怎么渡过那些坑的,甚至有人会觉得你搞不明白那些“思想”是很奇怪的,或者简言之——“你不够聪明”。

我得承认,我的确是没那么聪明,但是我不能蠢一点吗?“笨”方法就不可以解决问题了吗?事实上,如果接触错了,你会发现并不是那样,还是可以有笨方法的(而且这和编程语言没有直接的绑定关系,就是一种方法论)。

Go就是在语言层面上提供了这样一种可能性,就是简化,甚至部分地“语言退化”,以便适应日趋复杂的未来。当然,简单的背后肯定也有复杂的工作要做,比如对语法的抽象、基础包的建设、对这种思想的传播等等。而且,我的意思也并不是必须学习Go才能解决问题,Go也有它适合和不适合的领域,但是总体上讲,一个面向当下和未来的工程师应该要理解这种保持简单和愚蠢的可贵和重要性。

天下皆知美之为美,斯恶已。皆知善之为善,斯不善已。

Golang还处于发展阶段,其“善”还没有到世人皆知的程度。因此,我觉得它还在「好用」的阶段。

GO的语言特性是什么?Go语言到底好不好用?

【Golang】Go语言中如何面向对象? Go语言(Golang)虽然不是一个纯粹的面向对象编程语言,但它通过结构体(Struct)、接口(Interface)等机制,提供了面向对象的编程范式。 在实际的项目开发中,使用面向对象的理念可以显著提高代码的可维护性、可扩展性和可复用性。 阅读详情

相关推荐

别再花钱买商业软件了!这4款免费DIC工具,从散斑生成到应变分析全搞定

本文介绍了4款免费开源的DIC(数字图像相关技术)工具,涵盖从散斑生成到应变分析的全流程,帮助用户零成本构建专业级DIC工作流。这些工具在精度、算法透明度和生态整合方面具有优势,适用于材料力学和实验力学研究,可替代昂贵的商业软件。

weixin_42525369的博客 168

Go语言的8大优势和3大缺点,从《Go语言学习笔记》开始一步步学习

随着Go语言的越来越普及,在普通程序员踩坑优化后,越来越多的程序员从其他语言转投了Go语言。特别是之前主要编程语言是Python的也转向了Go。 到底有什么魅力让那么多人纷纷去学习呢?下面来介绍一下Go语言的优点和缺点。 Go语言的优点 1、性能 Go 极其地快。其性能与 Java 或 C++相似。在我们的使用中,Go 一般比 Python 要快 30 倍。 2、语言性能很重要 对很多...

肥小强知识分享 1万+

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 467

Go语言崛起:征服编程世界的黑马

Go语言,又称Golang,是由Google开发的一种开源编程语言,自2009年问世以来,它迅速在全球范围内获得了广泛的关注和应用。Go语言的设计初衷是为了解决当今软件开发中遇到的一些挑战,比如并发处理、性能效率以及编程的简洁性。在设计上,Go语言整合了现代编程语言的一些最佳实践,例如其丰富的内置类型和简单的语法,这使得它对于初学者来说相对容易学习,同时保留了足够的能力以应对复杂的系统级编程任务。根据最新的编程社区指数,如TIOBE Index,Go语言的受欢迎程度逐年上升,特别是在云计算和微服务架构领域,

qq_42538588的博客 1889

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 608

脑机接口(BCI)从原理到开发实战 09|SSVEP应用:通过视觉刺激控制设备

本文介绍了稳态视觉诱发电位(SSVEP)脑机接口技术。SSVEP是一种高效的非侵入式BCI范式,当用户注视特定频率闪烁的视觉刺激时,大脑枕叶会产生对应的节律性响应。文章详细阐述了SSVEP的神经机制、刺激范式设计、数据预处理方法,重点讲解了典型相关分析(CCA)这一核心识别算法。相比运动想象和P300范式,SSVEP具有信息传输率高(60-100 bits/min)、信号稳定、无需训练等优势,在高速拼写、设备控制等领域应用广泛。文章还提供了完整的电极选择、滤波、分段等预处理流程,以及CCA和滤波器组CCA的

小明的博客 1350

Go语言有那么多优点 为什么不能取代Java

Go是一种开源的编程语言,旨在实现简洁、高效和可靠的软件开发。虽然Go在某些方面具有优点,但在某些方面也可能无法取代Java。

大道至简 1717

Ollama教程——模型:如何将模型高效导入到ollama框架

本教程详细介绍了如何将GGUF、PyTorch和Safetensors格式的模型导入到ollama框架中。通过一系列步骤,从环境准备、模型转换和量化,到最终的模型创建和运行,我们为开发者提供了一个清晰的指南。此外,我们还探讨了如何发布模型到ollama平台,使得模型可以被更广泛地分享和应用。ollama框架提供了一个灵活、高效的解决方案,帮助开发者在各种环境中部署和运行机器学习模型。无论您是想将现有模型快速部署到生产环境,还是希望探索新的模型架构,ollama都能为您提供所需的工具和资源。

walkskyer的博客 1万+

学 Go 具体能干什么?

Go 也可以用于嵌入式系统开发,特别是使用 TinyGo,一个可以将 Go 代码编译成适用于微控制器的工具。Go 在云计算和分布式系统中也有广泛应用,许多流行的云原生工具和平台都是用 Go 编写的。Go 的简洁性和强大的功能使其成为教学和研究的良好选择,特别是在并发编程和系统编程领域。尽管 Go 不是游戏开发的主流语言,但仍有一些游戏开发框架和引擎支持 Go。Go 在后端开发中非常流行,特别适合构建高性能的 Web 服务和 API。Go 提供了强大的网络编程库,适合构建各种网络应用和协议。

猿小白的博客 2428

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

背景模糊 是一个很实用的功能,它可以帮助游戏在视觉上有更好的专注力和表现力。 实现模糊的种类和方式有很多种,大家自行选择适合自己的就可以了。 下面一起来看下本文实现背景模糊的效果和使用方式吧!

努力前行,总会成为自己心中的那道光 4万+

【异常】OpenAI提示内容有误 Invalid prompt: your prompt was flagged as potentially violating our usage policy.

用户需优先调整提示内容,确保符合OpenAI的使用政策。若问题持续,建议结合请求ID和具体代码示例联系官方支持。同时,可参考腾讯云、Microsoft Q&A等平台提供的错误处理实践(如重试机制、日志记录)优化代码健壮性。

奶爸的编程之路,也就一周冷个三天 2072

golang适合做什么

Golang(Go语言)是一种开源的编程语言,由Google开发并于2009年首次发布。作为一门现代化的编程语言,Golang在性能、并发性和可靠性方面具有显著的优势,因此被广泛应用于构建高性能、可伸缩、并发和可靠的服务器端应用程序。本文将深入探讨Golang适合做什么,并介绍它在不同领域的应用。

hitpter的专栏 1057

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及

作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希望大家一起进步。这系列文章入门部分将参考“尚硅谷”韩顺平老师的视频和书籍《GO高级编程》,详见参考文献,并结合作者多年的编程经验进行学习和丰富,且看且珍惜吧!后续会结合网络安全进行GO语言实战深入,驾驭~ 这些年我学过各种编程语言,从最早的C语言到C++,再到C#、PHP、JAVA,再到IOS开发、Python,到最新的GO语言,学得是真的杂。有时

杨秀璋的专栏 12万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Go 不同于其他语言的九个特性

随着编程语言的发展,Go 还很年轻。它于 2009 年 11 月 10 日首次发布。其创建者 Robert Griesemer Rob Pike 和 Ken Thompson 在 Google 工作,在那里大规模扩展的挑战激励他们将 Go 设计为一种快速有效的编程解决方案,用于具有大型代码库、管理由多个开发人员,具有严格的性能要求,并跨越多个网络和处理核心。Go 的创始人在创建他们的新语言时也借此机会学习了其他编程语言的优点、缺点和漏洞。结果是一种干净、清晰和实用的语言,具有相对较少的命令和功能集。

努力是为了站在万人之中,成为别人的光 3万+

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

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

【GoLang】哪些大公司正在使用Go语言

随着计算机科学和软件开发的快速发展,编程语言的选择变得愈加关键。在这个多元化的编程语境中,Go语言(简称Golang)以其简洁、高效、并发处理能力等特性逐渐受到业界关注。越来越多的大型科技公司纷纷采用Go语言作为其软件开发的首选语言,这种趋势反映了Go语言在构建可靠、高性能和易于维护的系统方面的卓越表现。😊🙏如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

Venus's Blog 3万+

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

Go简介、Go和Java的对比

健身变秃,coding变强 1万+

【Golang】三分钟让你快速了解Go语言&为什么我们需要Go语言?

Go编译速度快的几个原因使用import引用管理方式没有模板编译负担1.5版本后编译器的优化语言本身关键字很少。

Yaoyao2024的博客 3689

01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包

1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存; 2.开发人员专注业务实现,降低了心智负担 ; 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面支持并发,非常简单; 2. goroute,轻量级线程,创建成千上万个goroute成为可能; 3.基于CSP(Communicating Sequential Process)模型实现...

数据知道的博客 2万+

100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念

100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念,欢迎来到100天精通Golang的基础入门篇!在这个系列教程中,我们将带领你逐步掌握Go语言的核心概念和语法。本篇博文将着重介绍Go语言的基本概念,包括其定义、用途和优势。通过阅读本文,你将对Go语言有一个清晰的了解。在第1天的学习中,我们将探索Go语言的基本概念。我们将介绍Go语言是什么,它可以用来做什么,以及它相较于其他编程语言的优势。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 6万+

Go的语言特性总结

写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言。Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在学习高性能并发编程的时候认识

挑灯看剑的专栏 4807

golang go语言_Go(Golang)编程语言

golang go语言Go (or golang) is a programming language created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically-typed language in the tradition of Algol and...

cumian8165的博客 1071

Go后端开发 -- Golang的语言特性

代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。代表项目:go-kit、micro、monzo bank的typhon、bilibili等。编译完成的可执行程序是比较大的,因为已经把所有需要的库全部静态编译起来了;代表项目:tidb、influxdb、cockroachdb等。代表项目:以太坊、hyperledger等。编译的时候就可以检查出来隐藏的大多数问题;通过编译的时候就可以知道代码哪里有问题;外,不依赖其他的库,可以直接。

kissland96166的博客 1387

为什么劝你要学习Golang以及GO语言(Go语言知识普及)

为什么劝你要学习Golang以及GO语言

m0_69234258的博客 4973

Go语言的几大优势和特性

要说起GO语言的优势,我们就得从GO语言的历史讲起了…… 本文由腾讯技术工程官方号发表在腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golang。出现在21世纪的GO语言,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型...

yunfan 6079

Go (Golang)编程语言详解

Go(Golang)是由Google开发的开源编程语言,旨在解决大规模软件开发中的痛点。其设计哲学强调简单、高效和可靠,拥有精简的语法、快速的编译速度、内置并发支持(Goroutines和Channels)以及强大的标准库。Go特别适合构建高并发网络服务和分布式系统,在云计算和微服务领域表现突出。尽管早期缺乏泛型等特性,但其开发效率与性能的平衡、简单的部署方式以及活跃的社区使其成为现代软件开发的热门选择。

bulita great world 2957
上一篇: 私藏的实用工具C/C++书目推荐
下一篇: 从小厂到腾讯T2.3OFFER,我所整理的面试题(含答案)
程序媛月下
博客等级 码龄7年 5262粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值