前言  

  截止到目前为止,Go语言已经更新到1.14.1,网上的很多教程均已经过时,我在此汇总并整理一下相关的教程,提供一个适合当下的Mac OS教程。

  教程中使用了Go在1.11之后推出的依赖包管理工具Go Modules[1],并使用了gopls来管理Go代码,让VSCode编写Go代码更加的顺滑。

  gopls是VSCode推出的调用微软官方的Language Server Protocol(LSP)[2]的扩展,包含了很多Go工具的功能[3],例如:godef(代码跳转),goimports(代码格式化),gocode(代码补全)等。

安装Go语言

一、安装主要有以下两种方式

1. Homebrew[4]安装(便于升级与卸载,推荐)

执行以下命令即可

brew install go

2. 官方下载pkg安装包(被墙了,可能需要一些技能。。。)

Go官方下载地址

下载完成后,点击安装,无脑下一步即可,中间只需要输入一次系统密码。

二、安装完成后验证是否安装成功

三、两种方式的区别

1. Homebrew安装

1) 通过以下命令升级和卸载

brew upgrade go

brew uninstall go

2) GOROOT路径

/usr/local/Cellar/go/<go 版本号>/libexec

2. 官方下载pkg安装包

1) 卸载时需要删除以下内容,升级则需要卸载后重新安装。

sudo rm -rf /usr/local/go

sudo rm -rf /etc/paths.d/go

2) GOROOT路径

/usr/local/go

Go环境变量配置[5]

Go的环境变量可以通过 go env 命令查看。在Go 1.13之后,无需再通过设置系统环境变量的方式来修改,可以通过 go env -w 命令来设置Go的环境变量。

需要设置的环境变量如下

# 用于存放依赖包及编译文件,比较随意,只要不和GOROOT重名即可,官方禁止这一行为。
go env -w GOPATH=/Users/<系统用户名>/Library/go
# 设置代理后,在未翻墙的情况下,打开VSCode后gopls工具的加载会很快。
go env -w GOPROXY=https://goproxy.cn,direct

VSCode开发环境配置

一、初始化Go项目

1. 在 ${GOPATH}/src 之外的任意位置创建一个Go项目。

2. 在项目内执行 go mod init 初始化当前Go项目。

3. Go项目内会出现一个 go.mod 文件。

二、VSCode插件配置

1. 插件列表

1) Go: VSCode官方提供的插件,可以使用Go的大部分工具。

2) Code Runner[6]: VSCode运行代码神器,支持运行40余种语言,可自行配置运行命令。

3) EditorConfig for VS Code[7]: 可以设置VSCode的代码编辑配置。

2. 插件配置

1) 在VSCode配置文件中添加 "go.useLanguageServer": true ,保存后,右下角会提示重启VSCode

2) 重启后右下角会提示安装gopls,点击安装即可。

3. 其他插件配置分享

"code-runner.runInTerminal": true,
"code-runner.ignoreSelection": true,
"code-runner.saveAllFilesBeforeRun": true,
"code-runner.executorMap": {
"python": "python3 -u",
"go": "cd $dir && go run ./",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
},

Code Runner

root = true

[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

EditorConfig for VS Code

总结

  经过以上的配置,VSCode的Go开发环境已经配置完成,可以在VSCode中愉快的编写并运行Go代码了。需要注意的是,由于使用的是gopls,每次打开Go项目,会有10s左右的加载时间,加载完成之后代码跳转,自动补全等功能才可以正常使用。

参考

[1]. 干货满满的 Go Modules 和 goproxy.cn

[2]. Langserver.org

[3]. Go tools that the Go extension depends on

[4]. Homebrew常规使用教程

[5]. 关于GOROOT、GOPATH、GOBIN、project目录

[6]. [VSCode插件推荐] Code Runner: 代码一键运行,支持超过40种语言

[7]. 快速用上 editorconfig 来规范编辑

其他

  Mac OS修改VSCode Go的默认缩进格式

Mac OS安装Go语言及配置VSCode开发环境:一个工具(gopls)解千愁的更多相关文章

  1. mac攻略(五) -- 使用brew配置php7开发环境(mac+php+apache+mysql+redis)

    前面介绍过基本的配置,后来我又从网上查找了很多资料,经过不断的摸索,下面做了一个总结,希望能对大家提供些许帮助(Mac版本是sierra)   一.mac系统会自带git,而我们要做的是自己安装git ...

  2. mac攻略(4) -- 使用brew配置php7开发环境(mac+php+apache+mysql+redis)

    [http://www.cnblogs.com/redirect/p/6131751.html] 网上有很多文章都是错误的,因为是copy别人的,作者没有自己亲测,不仅不能给新手提供帮助,还会产生严重 ...

  3. 无废话--Mac OS, VS Code 搭建c/c++基本开发环境

    无废话,直接上步骤. 1) 安装 xcode. 打开App Store,搜索xcode,进行下载安装. 2)执行命令: xcode-select --install 安装命令行工具. 3)安装VS C ...

  4. 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解

    JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 ...

  5. HC32L110(三) HC32L110的GCC工具链和VSCode开发环境

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  6. mac OS 安装配置Nginx服务器

    系统环境 安装工具 Homebrew软件包管理器 :<mac OS 安装 Homebrew软件包管理器>https://blog.csdn.net/weixin_41791279/arti ...

  7. 在Mac OS X 10.8中配置Apache + PHP + MySQL

    在Mac OS X 10.8中配置Apache+PHP+MySQL的内容包括: 配置Apache 配置PHP 安装MySQL 配置PHPAdmin 设置数据库默认字符集 一. 配置Apache 1. ...

  8. 在Mac OS X 10.8中配置Apache+PHP+MySQL

    在Mac OS X 10.8中配置Apache+PHP+MySQL的内容包括: 配置Apache 配置PHP 安装MySQL 配置PHPAdmin 设置数据库默认字符集 一. 配置Apache 1. ...

  9. 【转】在Mac OS X 10.8中配置Apache + PHP + MySQL

    CHENYILONG Blog 在Mac OS X 10.8中配置Apache + PHP + MySQL 在Mac OS X 10.8中配置Apache+PHP+MySQL的内容包括: 配置Apac ...

随机推荐

  1. 关于CSS设置页面背景图的一些疑问

    关于背景图片的位置其background-position设置背景图片的位置有两种方式,一种是是根据像素设置,第二种根据百分比设置,第一种根据像素的位置是很简单的,只是关于百分比这个设置理解特别容易出 ...

  2. C#版免费离线人脸识别——虹软ArcSoft V3.0

    [温馨提示] 本文共678字(不含代码),8张图.预计阅读时间需要6分钟. 1. 前言 人脸识别&比对发展到今天,已经是一个非常成熟的技术了,而且应用在生活的方方面面,比如手机.车站.天网等. ...

  3. 判断某个点是否在某个view上

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObjec ...

  4. 迄今为止最硬核的「Java8时间系统」设计原理与使用方法

    为了使本篇文章更容易让读者读懂,我特意写了上一篇<任何人都需要知道的「世界时间系统」构成原理,尤其开发人员>的科普文章.本文才是重点,绝对要读,走起! Java平台时间系统的设计方案 几乎 ...

  5. python 关于函数递归调用自己

    爬取b站博人传 每页短评20个,页数超过1000页, 代码如下 import requests import json import csv def main(start_url): headers ...

  6. 详解POI的使用方法(DOM和SAX的方式)及存在的不足

    简介 Apache POI是一套基于 OOXML 标准(Office Open XML)和 OLE2 标准来读写各种格式文件的 Java API,也就是说只要是遵循以上标准的文件,POI 都能够进行读 ...

  7. 使用 Pandas 的 to_excel() 方法来将多个 csv 文件合并到一个 xlsx 的不同 sheets 内

    这几天在用 Python3 研究一个爬虫,最后一个需求是把爬下来的20+个csv文件整合到一个excel表里的不同sheets. 初版的核心代码如下: while year <= 2018: c ...

  8. 控制游戏/app使用期限/过期,证书有效期,弹出公告支持离线使用/后端控制,支持Swift、Objective-C集成非常简单,永久免费框架

    CertCheck.framework (for iOS) 只能运行于真机上,切勿在模拟器上使用 这是一个控制游戏/app使用期限(到设定的时间无法打开app),或发布弹出公告永久免费的框架,可以全版 ...

  9. Web_XML

    第1章 XML简介 “当 XML(扩展标记语言)于 1998 年 2 月被引入软件工业界时,它给整个行业带来了一场风暴.有史以来第一次,这个世界拥有了一种用来结构化文档和数据的通用且适应性强的格式,它 ...

  10. C# 在DataGridView中,点击单元格调出 TreeView控件 或 ListBox控件

    1.调出 TreeView控件 或  ListBox控件 private void deductGrid1_CellClick(object sender, DataGridViewCellEvent ...