报告!Golang冲上来啦!

今天又来讲Go语言,根据全球知名的编程语言排行榜TIOBE在4月份公布的最新的编程语言排名,令人瞩目的是,Go语言已经跃升至历史最高位,位列排行榜第七名,并且Go语言是前十榜单中最年轻的编程语言。这一成绩不仅彰显了Go语言的强大实力,也进一步验证了其在软件开发领域的广泛应用和高度认可。

请在此添加图片描述

(数据来源:https://www.tiobe.com/tiobe-index)

Go语言的历史曲线图,在2017年用户比例达到最高,并且在近两年正在呈上升趋势。

请在此添加图片描述

(数据来源:https://www.tiobe.com/tiobe-index/go)

借着这篇文章,我们来分享一个有意思的话题:Go语言之"道"。

"道"一般是指事物的内在本质或自然趋势。水倾向于流动,这就是它的道,你可以给它筑坝、引导它、抽水或以其他方式干扰它,但尽管你付出了所有努力,它最终还是会回到原来的地方。

那么Go语言之道是什么呢?

善良

善良对于Go语言意味着什么?

意味着Go语言是为人创造的语言,而不是为计算机创造的。相比机器人可能容易犯错,不耐烦,缺乏经验,所以Go 代码的设计和细节中体现着很多人性化的思想。

就比如时间格式转换,就封装的更让人容易记:

format := time.Now().Format("2006-01-02 03:04:05") // 因为在国外时间一般把年放在后面,所以就成为01-02 03:04:05 2006,即123456

除此之外Go基础库提供描述性名称,比如包名,简单容易记录,易于导入,内部设计深度抽象,让用户利用小而简单的 API 来访问强大、有用的行为。

Go语言还善待那些运行Go程序的人,Go程序易于安装和更新,需要最少的配置和依赖关系,并捕获最常见的使用错误和运行时错误,并为用户提供有关问题和如何修复的有用、准确和友好的信息。Go程序安装不需要配置额外的插件,只需要打开Go Modules开关,就可以通过依赖构建项目,相比Java的Maven更简单。

俭朴

Go 本身是一种简单的语言,只有25个关键字,是关键字最少的编程语言之一。

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

Go语言设计的程序小而集中,整洁,只做好一件事。这样做的好处就是不会让用户使用大量的时间成本去学习。

灵活性是一件好事,但我们不应该试图处理每个案例,或者提供每个功能,不应该为了我们不需要的东西而牺牲一个简单的设计。一个简单的程序比一个复杂的程序更容易扩展。

谦逊

Go语言本身是谦虚和务实的:它不具备其他一些语言的所有高科技特征和理论优势。

Go语言认识到我们容易犯错误,它有很多方法可以保护我们免受错误的影响。比如负责分配内存,自动垃圾清理,警告我们未使用的导入或变量。

所以作为一名Gopher,我们也可以谦虚一点,我们编写代码并不是为了给每个人留下深刻印象,而是做显而易见的事情。我们清晰直接地表达自己,而不需要在代码上突兀地彰显自己的个性。

在程序的错误处理上,Go语言更鼓励发生错误时处理一切,因此会谦虚地返回错误,并提供有用的上下文信息,将其留给程序员来决定该怎么做。

无为

最好的优化是不需要优化。Go之"道"的最后一个教义是无为。

解决问题的心态是好的,但没有问题才是更好。我们如何重新定义这个问题,让它消失?什么样的需求重述会使解决方案变得灵活或显而易见?有没有一个简单而优雅的设计?所以最好的优化是根本不需要做这些事。

以上就是对Go语言之道的简要分享。相信未来随着技术的不断发展和创新,Go语言有望继续保持领先地位,为软件开发带来更多的惊喜和突破。

参考

  • https://bitfieldconsulting.com/golang/tao-of-go

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/618782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

驾驭多云环境,加速AI创新丨Animbus Cloud 8.3.0 算力调度平台升级发布

大模型开启全球新一轮AI浪潮,伴随算力规模的爆发增长以及计算技术的多元创新,需要更稳定、高效、敏捷的异构计算基础设施,才能充分发挥对算力能力的重要支撑。 作为开放智能云边架构引领者,九州未来凭借多年的技术积累、实践沉淀…

Libcity 笔记:自定义模型

在/libcity/model/trajectory_loc_prediction/,我们复制一份Deepmove.py,得到DM_tst.py,我们不改变其中的机制,只动class name 然后修改相同目录下的__init__.py: 修改task_config文件: 在config/model/tra…

Matlab-粒子群优化算法实现

文章目录 一、粒子群优化算法二、相关概念和流程图三、例题实现结果 一、粒子群优化算法 粒子群优化算法起源于鸟类觅食的经验,也就是一群鸟在一个大空间内随机寻找食物,目标是找到食物最多的地方。以下是几个条件: (1) 所有的鸟都会共享自己的位置以及…

五一相亲的华为男:女方嫌弃“不像年薪百万”

上一篇:这才是作为人的生活:某大厂员工,200万存款靠利息生活 在这个看重外貌、车辆和房产的社会,相亲往往变成了一场隐秘而激烈的竞争。 作为一名985高校的硕士毕业生,拥有华为六年工作经验的我,33岁&#…

【算法系列】栈

目录 leetcode题目 一、删除字符串中的所有相邻重复项 二、比较含退格的字符串 三、基本计算器 II 四、字符串解码 五、验证栈序列 六、有效的括号 七、最小栈 八、逆波兰表达式求值 九、用栈实现队列 十、用队列实现栈 leetcode题目 一、删除字符串中的所有相邻重…

带头单链表 C++实现

节点定义 带头单链表&#xff1a;我们只需要一个结点指针指向整个链表的第一个节点&#xff0c;这样我们就可以通过next指针访问整个链表内的所有节点 template<class T> struct ListNode {T _val;ListNode* _next;ListNode(const T &val):_val(val),_next(nullptr){…

对数据进行标准化和归一化

数据的形式&#xff1a;保存在CSV中&#xff0c;第一列为姓名&#xff0c;第二列之后为特征。 标准化 输入文件的路径&#xff0c;设置保存转化后的文件路径 import pandas as pd from sklearn.preprocessing import StandardScaler# 读取CSV文件 data pd.read_csv(rC:\User…

上位机图像处理和嵌入式模块部署(树莓派4b使用的注意事项)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派系列开发板最早的时候&#xff0c;价格还是比较高的。不过由于它生态比较丰富&#xff0c;使用起来比较方便&#xff0c;所以大家都默认了它…

代码已经推送到远程,如何退回之前的提交记录

现状&#xff1a;代码已经推送到远程&#xff0c;如何退回之前的提交记录 Sourcetree工具实现 最后使用命令强制推送&#xff1a; git push origin dev --forceidea 工具实现 强行推送

google test 使用指南

目录 测试项目 calculator.h calculator.cpp test01.cpp 创建新项目 选择Google Test 选择要测试的项目 pch.cpp 加入依赖 设为启动项目 ​编辑 运行 ​编辑 关键点 测试项目 calculator.h #ifndef __CALCULATOR_H__ #define __CALCULATOR_H__#include <i…

远程调用feign的使用

在orderservice子工程中 <!--feign的远程--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>启动类加上这个注解 EnableFeignClients //自动装配…

数据结构与算法学习笔记之线性表二---顺序表的静态存储表示和实现(C++)

目录 前言 1.什么是顺序表 2.顺序表的静态存储表示 1.初始化 2.长度 3.数据元素 4.长度 5.获取元素下标 6.前驱节点 7.后继节点 8.插入 9.删除 10.遍历 11.测试代码 前言 这篇文章讲的是顺序表的两种实现方式。 1.什么是顺序表 线性表的顺序表示指的是用一组地址…

电商核心技术揭秘56: 社群营销的未来趋势与挑战

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 电商技术揭秘四十一&#xff1a;电商平台的营销系统浅析 电商技术揭秘四十二&#…

LeetCode100题总结

LeetCode100题总结 前言LeetCode100题总结题型梳理双指针11. 盛最多水的容器234.回文链表75.颜色分类206.反转链表142.环形链表215.三数之和 滑动窗口3. 无重复字符的最长子串209. 长度最小的子数组438. 找到字符串中所有字母异位词 广搜102. 二叉树的层序遍历200. 岛屿数量617…

ppt保存文件奇怪问题

我发现ppt中的形状保存成jpg,png和pdf时&#xff0c;格式不一样 比如 当右键单击时&#xff0c;然后选择另存为图片 png格式 jpg格式 pdf格式 感觉还是很奇怪&#xff0c;就pdf的格式比较靠谱一点

LLM-KERec

1、LLM-KERec整体框架 LLM-KERec系统包括传统推荐模块和基于LLM的互补知识增强模块。传统推荐模块负责召回候选商品、粗排过滤、精排和重排。LLM互补知识增强模块则包括实体提取器、互补图构造、E-E-I权重决策模型等&#xff0c;以整合互补知识&#xff0c;增强推荐效果。 2、…

CSS滑动门

CSS滑动门使各种特殊形状的背景能够自动拉伸滑动&#xff0c;以适应元素内部的文本内容&#xff0c;其原理是&#xff1a;利用CSS精灵和盒子撑开宽度适应不同字数的导航栏。 特点&#xff1a; 1.可以根据导航字数自动调节宽度&#xff1b; 2.可以以简单的背景图实现炫彩的导航条…

【数据结构与算法】递归

// 计算 1-100 累加 function add(a, b) {return a b ? a : add(a, b - 1) b }console.log(add(1, 100))// 计算阶乘 function factorial(n) {return n < 1 ? 1 : n * factorial(n - 1) }console.log(factorial(5)) // 120理论上所有递归都可以用循环实现。 注意防止栈…

【基于element ui的color选择器】基于element ui的color选择器

技术版本如下&#xff1a; vue 2.6.14 less 3.13.1 element-ui 2.15.6 less-loader 5.0.0需求&#xff1a; 支持RGB、HEX编码、支持吸管吸取颜色、颜色选择器、颜色模板、透明度、色板、线性渐变颜色 效果图&#xff1a; 1.引入选择器的color-all文件 <template><…

STC8增强型单片机开发day03

中断系统INT 中断的概念 中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。 当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求&#xff0c;要求 CPU 暂停当前的工作,转而去处理这个紧急事件&#xff0c;处理完以后&#xff0c;再回到原来被中断的…