当前位置: 首页 > 编程日记 > 正文

Visual Studio Code Go 插件文档翻译

此插件为 Go 语言在 VS Code 中开发提供了多种语言支持。

阅读版本变更日志了解此插件过去几个版本的更改内容。

1. 语言功能 (Language Features)

1.1 智能感知 (IntelliSense)

  • 编码时符号自动补全(使用 gocode
  • 编码时函数签名帮助提示(使用 gogetdocgodef+go code
  • 鼠标悬停符号时快速显示信息(使用 gogetdocgodef+go code

1.2 代码导航 (Code Navigation)

  • 快速浏览符号定义(使用 gogetdocgodef+go code
  • 查找符号的引用和接口的实现(使用 guru
  • 查找文件中的某符号或者查看文件结构大纲(使用 go-outline
  • 查找工作区某符号(使用 go-symbols
  • 在 Go 程序和相应测试文件之间切换

1.3 代码编辑 (Code Editing)

  • 代码片段快速编程
  • 文件保存时手动格式化代码(使用 goreturnsgo imports ,同样可以移除未使用导入,或使用 go fmt
  • 符号重命名(使用 gorename 。注意:Windows 工作环境下消除重命名需要在路径中有 diff 工具
  • 在当前文件添加导入(使用 gopkgs
  • 添加 / 移除结构域中的标签(使用 gomodifytags
  • 为接口生成方法存根(使用 impl
  • 为结构字面量填充默认值(使用 fillstruct

1.4 代码诊断 (Diagnostics)

  • Build-on-save 编译代码和显示构建错误(使用 go buildgo test
  • Vet-on-save 运行 go vet 和以警告显示错误
  • Lint-on-save 以警告显示检查错误(使用 golint, gometalinter, staticcheck, golangci-lintrevive
  • 编辑时报告语义 / 语法错误

1.5 测试 (Testing)

  • 在当前文件,当前包,整个工作区运行测试,在光标下使用命令行或 codelens
  • 运行基准程序,在光标下使用命令行或 codelens
  • 显示代码覆盖率,基于需求或在当前包运行测试之后
  • 生成单元测试框架(使用 gotests

1.6 调试 (Debugging)

  • 调试你的代码,二进制文件或测试文件(使用 delve

1.7 其他 (Others)

  • 安装 / 更新所有依赖的 Go 工具
  • 上传至 Go Playground(使用 goplay

2. 如何使用此插件?(How to use this extension?)

安装和打开 Visual Studio Code。按住 Ctrl+Shift+XCmd+Shift+X 打开插件面板。找到并安装 Go 插件。同样可以通过 Marketplace 安装此插件。在 VS Code 中打开任何以 .go 为后缀的文件。此插件便启动了。

此插件用了一系列 Go 工具以此提供丰富的功能。这些工具默认安装在你的 GOPATH 路径下。如果你希望让这些工具安装在独立的地方,在设置中的 go.toolsGopath 中提供你期望的地方。通过此文档了解更多—— Go tools that the Go extension depends on 。

你将在右侧底部看到 Analysis Tools Missing (分析工具缺失),点击消息将安装所有依赖的 Go 工具。你同样可以运行 command Go: Install/Update tools 安装 / 更新工具。

注意 1:阅读 GOPATH in the VS Code Go extension 了解不同的方式得到此插件通过设置 GOPATH。

注意 2:Format on save 特性的超时时间为 750 毫秒,之后格式化将中止。 您可以使用设置 editor.formatOnSaveTimeout 更改此超时。 在 Visual Studio 代码中启用 Auto Save 后,此功能将被关闭。

注意三:此插件使用 gocode 在您编码时提供补全列表。 如果您已禁用 go.buildOnSave 设置,那么您可能无法从尚未构建的依赖项中获得新的结果。 因此,请确保在这种情况下手动构建了依赖项。

2.1 自定义 Go 插件功能 (Customizing the Go extension features)

Go 插件在安装 go 后便可准备使用。 如果要自定义功能,可以在 “用户” 或“工作区”设置中设置。 阅读 All Settings & Commands in Visual Studio Code Go extension ,以获取完整的选项列表及其说明。

2.2 Go 语言服务器 (Go language Server)

Go 插件使用一系列 Go tools 来提供丰富的语言功能。 另一种方法是使用一个提供相同功能的语言服务器。

此前,我们使用 language server from Sourcegraph 添加支持。由于它不再更新,并且它不支持 Go 模块,我们现在转而使用 language server from Google 。

  • 如果你正在使用 Sourcegraph 的语言服务器,你可以继续使用只要你不使用 Go 模块。
  • 由于 Google 的语言服务器为 Go 模块提供了更好的支持,当插件检测到您开发的项目中使用了 Go 模块时,系统会提示您使用 Google 语言服务器。
  • 如果您之前从未使用过语言服务器,现在选择使用它,系统将提示您安装并使用 Google 提供的语言服务器。

2.2.1 控制 Go 语言服务器使用的设置 (Settings to control the use of the Go language server)

以下是可用于控制语言服务器使用的设置。 您需要重新加载 VS Code 窗口才能使这些更改的设置生效。

  • go.useLanguageServer 设置为 true 启用语言服务器

  • 使用 go.languageServerExperimentalFeatures 设置来控制您希望语言服务器启用哪些功能。诊断 (Diagnostics) 是默认情况下唯一未启用的功能。 如果要从语言服务器启动此功能,请在设置中做如下添加

    "go.languageServerExperimentalFeatures": {
    "diagnostics": true
    }
    复制代码
  • 添加如下设置可在一个日志文件中收集日志

    "go.languageServerFlags": ["-logfile", "path to a text file that exists"]
    复制代码
  • 设置 “go.languageServerFlags”:[“- rrp.trace”] 以在输出面板中查看完整的 rpc 跟踪 (View -> Output -> gopls)

2.2.2 更改当前使用服务器的设置 (setting to change the language server being used)

如果你想尝试其他语言服务器,比如,bingo , 然后安装并添加如下设置

"go.alternateTools": {"gopls": "bingo"
}
复制代码

这将告诉 Go 插件在 gopls 中使用 bingo。

2.2.3 提供关于 gopls 的反馈 (provide feedback on gopls)

如果你在使用 gopls 语言服务器时发现任何问题, 请先在 list of existing issues for gopls 中查看并在注册新案例之前用您的案例更新相关问题,网址为 github.com/golang/go/i…>

2.3 林特 (Linter)

linter 是一个反馈代码风格和给出建议的工具。此插件默认使用官方的 golint 作为一个 linter。

您可以通过在设置中将 go.lintTool 设置为 “gometalinter” 来更改默认的 linter 而使用更高级的 Go Meta Linter 。

Go Meta Linter 使用多种 linter 的集合,此插件将会为你安装。

一些十分实用的 linter 工具:

  • errcheck 检查你代码中未检测的错误。
  • varcheck 找出未使用的屈居变量和常量。
  • deadcode 找出未使用代码。

如果只想运行特定的 linters(某些 linters 很慢),可以修改配置以指定它们:

  "go.lintFlags": ["--disable=all", "--enable=errcheck"],
复制代码

或者,您可以使用 staticcheck,它可能具有明显优于 gometalinter 的性能,因为仅支持这些工具的部分。

另一种选择是 golangci-lint,它具有 megacheck 相同的性能特点,但支持更广泛的工具。 您可以使用 go.lintFlags 配置 golangci-lint,例如,仅在新代码中显示问题并启用所有 linters:

"go.lintFlags": ["--enable-all", "--new"],
复制代码

golint 的另一种选择是 revive。 它是可扩展的,可设置的,提供了比 golint 更多的规则,并且具有明显更好的性能。

配置 revive,使用:

"go.lintFlags": ["-exclude=vendor/...", "-config=${workspaceFolder}/config.toml"]
复制代码

最后,这些 linter 的结果将显示在代码中(带有建议的位置将加下划线,以及输出窗口中。

2.4 命令 (Commands)

除了集成的编辑功能外,该插件还在 Command Palette 中提供了几个用于处理 Go 文件的命令:

  • Go: Add Import 在你的 Go 上下文中,从包列表中添加一个导入
  • Go: Current GOPATH 查看当前配置的 GOPATH
  • Go: Test at cursor 在活动文件的当前光标位置运行测试
  • Go: Test Package 在包含活动文档的包中运行所有测试
  • Go: Test File 在当前活动文档中运行所有测试
  • Go: Test Previous 运行以前运行的测试命令
  • Go: Test All Packages in Workspace 在当前工作空间中运行所有测试
  • Go: Generate Unit Tests For Package 为当前包生成单元测试
  • Go: Generate Unit Tests For File 为当前文件生成单元测试
  • Go: Generate Unit Tests For Function 为当前文件中的所选函数生成单元测试
  • Go: Install Tools 安装 / 更新插件所依赖的所有 Go 工具
  • Go: Add Tags 将已配置的标记添加到选定的结构字段。
  • Go: Remove Tags 从选定的结构域中删除已配置的标记。
  • Go: Generate Interface Stubs 为给定接口生成方法存根
  • Go: Fill Struct 使用默认值填充结构字面量
  • Go: Run on Go Playground 将当前选择或文件上传到 Go Playground

您可以从命令面板中访问所有上述命令 (Cmd+Shift+P or Ctrl+Shift+P)。

其中一些命令作为实验性功能在编辑器上下文菜单中是可选择的。要控制在编辑器上下文菜单中显示哪些命令,请更新 go.editorContextMenuCommands 设置。

2.5 可选:调试 (Opthinal: Debugging)

要使用调试器,你当前必须手动安装 delve。 阅读 Installation Instructions 获取详细细节。在 MacOS 上,它需要创建一个自签名证书来签署 dlv 二进制文件。

更多请阅读 Debugging Go Code Using VS Code。

2.5.1 远程调试 (Remote Debugging)

要使用 VS Code 进行远程调试,请阅读 Remote Debugging。

3. 安装或更新所以依赖项 (Install or update all dependencies)

要快速安装(或更新)所有依赖项,请参阅 Go Tools wiki page。

4. 构建和调试插件 (Building and Debugging the Extension)

您可以在插件开发期间设置一个用于调试插件的开发环境。 阅读 Building, Debugging and Sideloading the extension in Visual Studio Code

5. 常见问题 (FAQ)

请参阅我们 Frequently Asked Questions 维基,获得你问题的答案或者进行故障排查。

6. 贡献 (Contributing)

此项目欢迎贡献和建议, 请仔细阅读我们的 Contributing Guide 了解你怎么做出贡献,它还包括有关贡献者许可协议的详细信息。

7. 行为守则 (Code of Conduct)

此项目采用 Microsoft Open Source Code of Conduct,有关更多信息请参阅 Code of Conduct FAQ 或联系 opencode@microsoft.com 以及其他问题或意见。

8. 许可证 (License)

MIT

转载于:https://juejin.im/post/5cf217845188256b8b59e8f4

相关文章:

资源 | 吴恩达《机器学习训练秘籍》中文版58章节完整开源

整理 | Jane出品 | AI科技大本营(ID:rgznai100)一年前,吴恩达老师的《Machine Learning Yearning》(机器学习训练秘籍)中文版正式发布,经过一年多的陆续更新,近日,这本书的中文版 58…

js字符串加密的几种方法

在做web前端的时候免不了要用javascript来处理一些简单操作,其实如果要用好JQuery, Prototype,Dojo 等其中一两个javascript框架并不简单,它提高你的web交互和用户体验,从而能使你的web前端有非一样的感觉,如海阔凭鱼跃。当然&…

Vue开发入门看这篇文章就够了

摘要: 很多值得了解的细节。 原文:Vue开发看这篇文章就够了作者:RandomFundebug经授权转载,版权归原作者所有。 介绍 Vue 中文网Vue githubVue.js 是一套构建用户界面(UI)的渐进式JavaScript框架库和框架的区别 我们所说的前端框架…

TensorRT Samples: CharRNN

关于TensorRT的介绍可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/78469551 以下是参考TensorRT 2.1.2中的sampleCharRNN.cpp文件改写的测试代码&#xff0c;文件(charrnn.cpp)内容如下&#xff1a;#include <assert.h> #include <str…

Python脚本BUG引发学界震动,影响有多大?

作者 | beyondma编辑 | Jane来源 | CSDN博客近日一篇“A guide to small-molecule structure assignment through computation of (1H and 13C) NMR chemical shifts”文章火爆网络&#xff0c;据作者看到的资料上看这篇论文自身的结果没有什么问题&#xff0c;但是&#xff0c…

C++中public、protect和private用法区别

Calsspig : public animal,意思是外部代码可以随意访问 Classpig : protect animal ,意思是外部代码无法通过该子类访问基类中的public Classpig : private animal ,意思是告诉编译器从基类继承的每一个成员都当成private,即只有这个子类可以访问 转载于:https://blog.51cto.…

TensorRT Samples: MNIST(Plugin, add a custom layer)

关于TensorRT的介绍可以参考&#xff1a;http://blog.csdn.net/fengbingchun/article/details/78469551 以下是参考TensorRT 2.1.2中的samplePlugin.cpp文件改写的通过IPlugin添加一个全连接层实现对手写数字0-9识别的测试代码&#xff0c;plugin.cpp文件内容如下&#xff1a…

AutoML很火,过度吹捧的结果?

作者 | Denis Vorotyntsev译者 | Shawnice编辑 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】现在&#xff0c;很多企业都很关注AutoML领域&#xff0c;很多开发者也开始接触和从事AutoML相关的研究与应用工作&#xff0c;作者也是&#…

tomcat6 配置web管理端访问权限

配置tomcat 管理端登陆 /apache-tomcat-6.0.35/conf/tomcat-users.xml 配置文件&#xff0c;使用时需要把注释去掉<!-- <!-- <role rolename"tomcat"/> <role rolename"role1"/> <user username"tomcat" password"…

@程序员:Python 3.8正式发布,重要新功能都在这里

整理 | Jane、夕颜出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】最新版本的Python发布了&#xff01;今年夏天&#xff0c;Python 3.8发布beta版本&#xff0c;但在2019年10月14日&#xff0c;第一个正式版本已准备就绪。现在&#xff0c;我们都…

TensorRT Samples: MNIST(serialize TensorRT model)

关于TensorRT的介绍可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/78469551 这里实现在构建阶段将TensorRT model序列化存到本地文件&#xff0c;然后在部署阶段直接load TensorRT model序列化的文件进行推理&#xff0c;mnist_infer.cpp文件内容…

【mysql错误】用as别名 做where条件,报未知的列 1054 - Unknown column 'name111' in 'field list'...

需求&#xff1a;SELECT a AS b WHRER b1; //这样使用会报错&#xff0c;说b不存在。 因为mysql底层跑SQL语句时&#xff1a;where 后的筛选条件在先&#xff0c; as B的别名在后。所以机器看到where 后的别名是不认的&#xff0c;所以会报说B不存在。 这个b只是字段a查询结…

C++2年经验

网络 sql 基础算法 最多到图和树 常用的几种设计模式&#xff0c;5以内即可转载于:https://www.cnblogs.com/liujin2012/p/3766106.html

在Caffe中调用TensorRT提供的MNIST model

在TensorRT 2.1.2中提供了MNIST的model&#xff0c;这里拿来用Caffe的代码调用实现&#xff0c;原始的mnist_mean.binaryproto文件调整为了纯二进制文件mnist_tensorrt_mean.binary&#xff0c;测试结果与使用TensorRT调用(http://blog.csdn.net/fengbingchun/article/details/…

142页ICML会议强化学习笔记整理,值得细读

作者 | David Abel编辑 | DeepRL来源 | 深度强化学习实验室&#xff08;ID: Deep-RL&#xff09;ICML 是 International Conference on Machine Learning的缩写&#xff0c;即国际机器学习大会。ICML如今已发展为由国际机器学习学会&#xff08;IMLS&#xff09;主办的年度机器…

CF1148F - Foo Fighters

CF1148F - Foo Fighters 题意&#xff1a;你有n个物品&#xff0c;每个都有val和mask。 你要选择一个数s&#xff0c;如果一个物品的mask & s含有奇数个1&#xff0c;就把val变成-val。 求一个s使得val总和变号。 解&#xff1a;分步来做。发现那个奇数个1可以变成&#x…

html传參中?和amp;

<a href"MealServlet?typefindbyid&mid<%m1.getMealId()%> 在这句传參中&#xff1f;之后的代表要传递的參数当中有两个參数第一个为type第二个为mid假设是一个參数就不用加&假设是多个參数须要加上&来传递

实战:手把手教你实现用语音智能控制电脑 | 附完整代码

作者 | 叶圣出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导语&#xff1a;本篇文章将基于百度API实现对电脑的语音智能控制&#xff0c;不需要任何硬件上的支持&#xff0c;仅仅依靠一台电脑即可以实现。作者经过测试&#xff0c;效果不错&#xff0c;同时可以依据…

C++/C++11中左值、左值引用、右值、右值引用的使用

C的表达式要不然是右值(rvalue)&#xff0c;要不然就是左值(lvalue)。这两个名词是从C语言继承过来的&#xff0c;原本是为了帮助记忆&#xff1a;左值可以位于赋值语句的左侧&#xff0c;右值则不能。 在C语言中&#xff0c;二者的区别就没那么简单了。一个左值表达式的求值结…

Could not create the view: An unexpected exception was thrown. Myeclipse空间报错

转载于:https://blog.51cto.com/82654993/1424339

Banknote Dataset(钞票数据集)介绍

Banknote Dataset(钞票数据集)&#xff1a;这是从纸币鉴别过程中的图像里提取的数据&#xff0c;用来预测钞票的真伪的数据集。该数据集中含有1372个样本&#xff0c;每个样本由5个数值型变量构成&#xff0c;4个输入变量和1个输出变量。小波变换工具用于从图像中提取特征。这是…

快速适应性很重要,但不是元学习的全部目标

作者 | Khurram Javed, Hengshuai Yao, Martha White译者 | Monanfei出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;实践证明&#xff0c;基于梯度的元学习在学习模型初始化、表示形式和更新规则方面非常有效&#xff0c;该模型允许从少量样本中进行快速适应。这些方…

面试题-自旋锁,以及jvm对synchronized的优化

背景 想要弄清楚这些问题&#xff0c;需要弄清楚其他的很多问题。 比如&#xff0c;对象&#xff0c;而对象本身又可以延伸出很多其他的问题。 我们平时不过只是在使用对象而已&#xff0c;怎么使用&#xff1f;就是new 对象。这只是语法层面的使用&#xff0c;相当于会了一门编…

DNS解析故障

在实际应用过程中可能会遇到DNS解析错误的问题&#xff0c;就是说当我们访问一个域名时无法完成将其解析到IP地址的工作&#xff0c;而直接输入网站IP却可以正常访问&#xff0c;这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大&#xff0c;所以本文将从零起步教给…

cinder存储服务

一、cinder 介绍&#xff1a; 理解 Block Storage 操作系统获得存储空间的方式一般有两种&#xff1a; 1、通过某种协议&#xff08;SAS,SCSI,SAN,iSCSI 等&#xff09;挂接裸硬盘&#xff0c;然后分区、格式化、创建文件系统&#xff1b;或者直接使用裸硬盘存储数据&#xff0…

Ubuntu 14.04 64位机上配置Android Studio操作步骤

Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日在Google I/O上发布&#xff0c;可供开发者免费使用。Android Studio基于JetBrains IntelliJ IDEA&#xff0c;为Android开发特殊定制&#xff0c;并在Windows、OS X和Linux平台上均可运行。1. 从 htt…

大规模1.4亿中文知识图谱数据,我把它开源了

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;人工智能从感知阶段逐步进入认知智能的过程中&#xff0c;知识图谱技术将为机器提供认知思维能力和关联分析能力&#xff0c;可以应用于机器人问答系统、内容推荐等系统中。不过要降低知识图谱技术应用的门…

使用CSS 3创建不规则图形

2019独角兽企业重金招聘Python工程师标准>>> 前言 CSS 创建复杂图形的技术即将会被广泛支持&#xff0c;并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。 现在&#xff0c;我们已经可以使用CSS…

谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

作者 | Less Wright编译 | ronghuaiyang来源 | AI公园&#xff08;ID:AI_Paradise&#xff09;【导读】这是来自Google和Toyota的新NLP模型&#xff0c;超越Bert&#xff0c;参数小了18倍。你以前的NLP模型参数效率低下&#xff0c;而且有些过时。祝你有美好的一天。谷歌Resear…

C++中extern C的使用

C程序有时需要调用其它语言编写的函数&#xff0c;最常见的是调用&#xff23;语言编写的函数。像所有其它名字一样&#xff0c;其它语言中的函数名字也必须在C中进行声明&#xff0c;并且该声明必须指定返回类型和形参列表。对于其它语言编写的函数来说&#xff0c;编译器检查…