GO 的那些 IDE

请添加图片描述

文章目录

    • 支持哪些功能
      • 快捷键
      • 代码高亮
      • 代码格式化
      • 代码提示
      • 导航跳转
      • 代码调试
      • 构建编译
      • 其他功能
    • GO有哪些IDE
      • Goland
      • VS Code
      • Vim GO
      • Sublime Text
      • Atom
      • LiteIDE
      • Eclipse
    • 总结

“程序员为什么要使用 IDE”,在一些社区论坛,经常可以看到这样的提问。关于是否应该使用IDE,每个人都有着自己的看法。

早期,程序的开发并不需要 IDE,那是以机器码编程为主的时代。后来随着计算机行业发展,为了进一步提升工程开发效率,IDE就产生了。
在这里插入图片描述

要明白的是,IDE主要是通过把各类命令工具集整合起来,开发的一套易于程序开发的软件,通常它帮我们形成一套高效的编程开发习惯。最终目标是为了提升项目的开发效率。

了解了 IDE 的本质,如果喜欢折腾,我们完全可以把诸如 vim 或 emacs 等文本编辑器打造一款属于自己的IDE。

支持哪些功能

无论用的是市面上已有的 IDE,还是 vim 纯手动打造的IDE,都离不开一个话题:IDE 涉及的功能有哪些?文本编辑的能力就不必介绍了,它是最基本的功能。

在这里插入图片描述

快捷键

双手不离键盘是高效开发中非常重要的一点,要做到它,我们就需要依赖功能强大的快捷键。IDE 通常都有一套独有的快捷键规范。当习惯了一款 IDE,快捷键或许是大家轻易不愿更换 IDE 的重要原因之一。

代码高亮

代码高亮主要涉及变量、函数定义、类、常量、特殊符号、关键词等。代码高亮可以提高代码阅读体验,对不同语法采用不同的配色方案,也可降低代码错误的发生几率。而且,IDE一般都支持自定义配色,可以由个人爱好自由设置。

代码格式化

为了方便团队开发,在项目开发前,通常都会制定统一的代码规范。制定好的规范需要遵从,而 IDE 一般都支持代码的格式化功能,帮我们更方便地实现目标。需要说明的是,不同于 Go,很多编程语言并没有类似 gofmt 的命令,代码规范也是多样。

代码提示

IDE的代码提示能根据输入快速给出一系列的建议列表,比如参数信息、成员列表、代码片段等。为了给出更精准的提示,一些IDE可能甚至会分析用户历史的操作记录。感觉这俨然已经是一个小型的推荐系统了。

导航跳转

大型项目的代码量通常较大,涉及文件也较多。在开发时,我们经常需要在变量、函数、类等代码间跳转。最不便利的方式,我们可以通过键盘方向键或鼠标实现切换。IDE通常都实现了在变量、类型定义、函数定义、文件之间快速跳转的方法。

代码调试

多数情况下,通过打印函数就可以实现代码调试。但通过系统化工具提供的调试功能,我们就能应付各种复杂的场景。调试工具通常支持各种断点调试能力、变量观察等功能。

构建编译

Linux 下最常用的构建工具应该是 Makefile,之前开发C/C++用的便是make。但有些语言项目用它构建会很复杂,比如 Java。IDE 的构建编译功能可以快捷地生成目标文件。编译功能通常使用的是语言自带编译器,比如 Go 用 go build 命令。

其他功能

当然,除上面介绍的这些,IDE可能还有很多其他能力,比如代码重构、文件历史记录、语言环境管理、数据库管理等。只要是能想到的功能,基本都可集成进来,现在的 IDE 俨然已经完全超出了传统IDE的范畴。

GO有哪些IDE

GO的发展已有十几年之久。在这期间出现了很多能编写 GO 语言的 IDE,把它们都详细介绍一遍是不现实的。接下来,重点介绍我比较了解几款IDE。

Goland

Goland,商业公司 jetbrains 推出的 Go 集成开发环境,它真的是无比强大。

我相信很多程序都用过他们家的IDE,比如Java的 Intellj IDEA、PHP的PHPStorm、Python的PyCharm、C++的CLion、前端的WebStorm等。使用JetBrains的IDE,我们可以享受到它优秀的开箱即用的体验和 jetbrains 积累十几年的插件体系。

前些年,也就是Goland发布之前,如果我们希望用jetbrain的IDE进行GO的开发,需要通过它提供的插件支持。Goland发布后,这些插件似乎已经下架了。

不得不承认,Goland的功能层面做的确实非常完美。不过有几点我想吐槽一下,首先必须要提的是,Jetbrians的IDE基本都存在着卡顿的毛病,资源消耗比较严重。虽然一些大牛提供了优化方案,但体验下来,和其他IDE依然没有相比。

Goland 开箱即用,它的问题很少,确实没有多少可介绍的,安装完成基本就可以开始编码!

VS Code

由微软开发的一款功能强大的现代化轻量级代码编辑器IDE,免费开源。通过它强大的插件扩展能力,VS Code几乎支持主流语言的项目开发。毫无例外,GO也是其中之一。

我之所以尝试VS Code,并非所谓的极客思维,喜欢瞎折腾。而是因为jetbrains的IDE经常会卡的心痛,而且自己经常会在不同语言间切换。一次启动多款Jetbrains的IDE,这是很痛苦的。

为VS Code加入GO的开发能力,要安装一款插件即可,可参考 VsCode 的 Golang 文档。

安装时,可能遇到一些问题,常见的就是,在安装一些依赖包时会出现网络下载失败。关于原因就不说了,大家都明白。不过,问题还是要解决的。举个具体的例子吧!在GO插件时,我们会通过go get golang.org/x/tools/xxx安装某个包,这时候大概率出现网络连接错误。我们可以通从github找到对应的仓库,golang/tools,然后使用git命令下载后,放在GOPATH指定的目录下,然后再安装即可。

插个题外话,VS Code使用的是Electron开发的,Electron是用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库,NodeJS与Chromium的结合。因此,利用浏览器的特性,利用VS Code,我们能实现很多奇葩的插件。

GitHub Daily:装上这几个 VSCode 插件后,上班划水摸鱼不是梦

Vim GO

在这里插入图片描述

细究起来,vim 是一款文本编辑器,但它却拥有了很多不该属于文本编辑器的能力,比如单词补全、ctags标签跳转、窗口分隔、崩溃文件恢复、文件diff、400多种文本高亮等。最重要的一点是,vim有一套自己的脚本语言,这为它通过插件扩展自己的能力提供了可能。

将vim扩展成一款适合自己使用的GO IDE,不仅要编写许多复杂的配置与脚本,还需要各种插件的相互配合,才能实现我们的目标。比如前面介绍的那些IDE的常见功能,在vim中都要逐一配置实现。

GO的vim环境搭建,需要用到一款非常重要的插件,vim-go,youtube上还有他的分享视频,有兴趣可以去看看。

vim-go提供了诸如代码的编译、执行、测试、代码重构、错误提示等各种功能,具体了解可查看 vim-go教程。

说明一点,虽然 vim 支持插件扩展,但它要集成出 VS Code 的体验还是非常困难的。

当前我用的主要就是这三款IDE,Goland VSC 和 vim。当然,还有很多其他IDE,下面也简单介绍下,但因为没怎么使用过,所以很难有经验之谈了。

最近将 vim 迁移到了 Neovim,体验下来,真的是一级棒。

Sublime Text

最初用VS Code,感觉它的使用习惯和Sublime相似。但说到Sublime,都说它是强大文本编辑器,而它的编码能力也是插件扩展来的。GoSublime就是为Sublime扩展GO功能的插件。

Atom

与VS Code一样,都是基于Node-Webkit,即Electron,开发的。是由github开源的文本编辑器。go-plus是Atom针对Golang开发的插件

LiteIDE

一款轻量级的IDE,听说是由中国人开发的。可能在Goland出现之前比较流行。也或许是自己孤陋寡闻,不知道现在还有多少人在用。

Eclipse

开源的IDE,盛行了多年,有着丰富的资源和粉丝人群,应该是Java开发最喜欢的IDE吧。GoEclise是Eclipse针对Goland的插件。从github了解到,这个项目好像很久没有更新了。

总结

本篇文章从为什么要使用IDE谈起,介绍了IDE的一些发展史。同时,总结了一款基本的IDE通常都会提供哪些功能。只要了解了这些,可以帮助我们以后更好地使用它们。最后,介绍了现在市面上流行的几款IDE,并在我力所能及的范围内分析了它们各自的优劣。

博文地址:Go 的那些 IDE

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有效的括号

有效的括号 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/valid-parentheses/…

Go语言学习笔记:基础语法和类型

Go语言学习笔记:基础语法和类型 目录 Go语言学习笔记:基础语法和类型学习路线前言变量声明常量数据类型布尔型(Boolean)整型(Integer)浮点型(Floating point)复数型(Comp…

LoadRunner从零开始之接触LoadRunner

LoadRunner 是Mercury Interactive 公司开发的一款成熟的性能测试工具,LoadRuner 作为性能测试的实现者,涉及了性能测试流程、性能测试技术和软件 体系架构等众多方面的知识点,可以说,学习LoadRuner 是理解和学习性能测试 的非常好…

elastic search入门

参考1:Elastic Search 入门 - 知乎 参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK,省略,之前已安装过 1.2创建ES用户 创建用户:sudo useradd esuser 设置密码&…

大模型相关学习资料整理

1. 核心2框架 1. semantic-kernel【微软】 https://learn.microsoft.com/en-us/semantic-kernel/overview/ 2. LangChain https://www.langchain.asia/ https://python.langchain.com/docs/get_started/introduction 2. 技术点 1. Function Call https://platform.opena…

mac安装node多环境

安装node node安装包 查询node环境 一般都是最新稳定版本 切换node环境 一般有些项目需要老的node版本支持,但是新的项目老的版本又不支持,这个时候需要切换node版本来运行各个项目 这个时候需要一个npm包 n来管理这些node环境包 sudo npm i -g n注…

Linux与windows互相传输文件之rzsz命令

文章目录 关于rzsz安装软件使用命令方法一:直接拖拽方法二:直接在终端输入rz 关于rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 安装完毕之后可以通过拖拽的方式将文件上传过去 首先看一下我们的机器可以使用网络吗&#xff…

导出 MySQL 数据库表结构、数据字典word设计文档

一、第一种 :利用sql语句查询 需要说明的是该方法应该适用很多工具,博主用的是navicat SELECT TABLE_NAME 表名,( i : i 1 ) AS 序号,COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE…

linux性能优化-磁盘I_O优化

1.文件系统 1.1.文件系统的工作原理 文件系统是在磁盘的基础上,提供了一个用来管理文件的树状结构。 接下来我们就看看Linux 文件系统的工作原理。 1.1.1索引节点和目录项 在 Linux 中一切皆文件 ,文件系统,本身是对存储设备上的文件,进行组织管理的…

安裝火狐和穀歌流覽器插件FoxyProxy管理海外動態IP代理

代理生態系統擁有大量有用的實用程式,使海外代理IP代理設置的使用變得簡單起來。其中一種類型叫做代理管理工具,像FoxyProxy就是該工具集比較受歡迎的。 本文將全面解析FoxyProxy擴展的功能和特性、Foxyproxy怎麼下載、以及如何在穀歌流覽器和火狐流覽器…

[小程序]Http网络请求

一、数据请求限制 出于安全性(bushi)考虑,小程序请求的数据接口必须具备以下两个条件: ①只能请求Https类型 ②必须将接口域名添加到信任列表中 1.配置request合法域名 配置步骤如下:小程序管理后台->开发->开发设置->服务器域名-&g…

【GitHub项目推荐--12306 抢票助手 python】【转载】

这个项目名很干脆,不知道以为是 12306 网站的源码,其实不是这是全 GitHub最德高望重的抢票小助手,功能一直在更新,且现已支持 Python 3.6 以上版本。 开源地址:https://github.com/testerSunshine/12306

开源项目CuteSqlite开发笔记(八):Windows 64位/32位使用GetWindowLongPtr钩子函数

需求描述 在开发CuteSqlite的时候, 有一个功能需要实现,鼠标移到WTL::CStatic上后,发送消息通知CToolTipCtrl弹出。 遇到问题 WTL::CStatic控件没有相应 WM_MOUSEMOVE 消息,需要返回一个HTCLIENT消息来让窗口处理函数执行 WM_MO…

【征服redis16】收官-redis缓存一致性问题解决方案

今天我们来写redis最后一篇:redis作为缓存时如何与数据库实现数据一致的问题。 最近看redis看得有点麻了,这篇就简单描述吧 目录 1.什么是缓存与数据库一致性问题 1.1 缓存一致性的概念 1.2 缓存不一致的场景 2.缓存不一致的解决思路 1.什么是缓存…

ITSS认证有用吗❓属于gj级证书吗❓

🔥ITSS由中国电子技术标准化研究院推出,包括“IT 服务工程师”和“IT 服务经理”两种认证。该系列认证符合GB/T 28827.1 的评估和ITSS服务资质升级要求。 🎯ITSS是受到gj认可的,在全国范围内对IT服务管理人员从业资格为一的权威的…

docker运行redis,jdk,nginx

Redis 1.查询redis [rootlocalhost ~]# docker search redis NAME DESCRIPTION STARS OFFICIAL redis Redis is an open source key-value store that… 12620 …

BACnet网关 BL120BN实现楼宇自控设备统一接入系统,BACnet转Modbus

随着物联网技术的迅猛发展,人们深刻认识到在智能化生产和生活中,实时、可靠、安全的数据传输至关重要。在此背景下,高性能的物联网数据传输解决方案——协议转换网关应运而生,广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

OpenCV书签 #差值哈希算法的原理与相似图片搜索实验

1. 介绍 差值哈希算法(Difference Hash Algorithm,简称dHash) 是哈希算法的一种,主要可以用来做以图搜索/相似图片的搜索工作。 2. 原理 差值哈希算法通过计算相邻像素的差异来生成哈希,即通过缩小图像的每个像素与平…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图: JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤: 第一步,安装插件 npm i amap/amap-jsapi-loader --save 第二步,在vue组件中写代码显示地图…

DEB方式安装elastic search7以及使用

参考:https://www.cnblogs.com/anech/p/15957607.html 1、安装elastic search7 #手动下载安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.1-amd64.deb wget https://artifacts.elastic.co/downloads/elasticsearch/elastics…