【VSCode实战】Golang无法跳转问题竟是如此简单

上一讲【VSCode实战】Go插件依赖无法安装 – 经云的清净小站 (skycreator.top),开头说到了在VSCode中Golang无法跳转的问题,但文章的最后也没给出解决方案,只解决了安装Go插件的依赖问题。

解决了插件依赖问题,无法跳转的问题也离解决不远了。关于无法跳转的问题,网上的一些方案有些过时,甚至对我攻克难关产生了相反的效果。

先简单说下过时的方法。

其中一篇文章VSCode Go Golang不能跳转到定义解决办法 (问题排查)_missing $gopath-CSDN博客,这么写的(还有很多类似文章,也都这么说,就不一一粘过来了):

如上图所示,这是Go扩展的扩展设置。

可以通过两种方法打开:

1.文件->首选项->设置,在上面的搜索栏输入@ext:golang.go,可以列出Go的所有设置选项

2.在已安装的扩展里面,找到Go扩展,点击右下角的齿轮标记,选择扩展设置,也会打开1的界面。

到今天为止最新的VSCode(1.91.1)和Go扩展(v0.42.0),从上到下,都找不到Go:Docs Tools

而最关键的是该文章博主说的那句话“不要选择language server!!! (我选择了, 不能用)”。

也正因为此,我走了不少弯路,下载各种依赖工具,依然不管用。直到借助AI的帮忙,让我寻觅到一些蛛丝马迹。那就是,选中这个选项Go: Use Language Server。

我发现选中并重启VSCode之后,右键菜单转到定义等功能出现了。

这些选项,在之前都是没有的。怀着无比激动的心情,随便找一个函数,选择“转到定义”。

好吧,没效果!果然啊,没那么简单。

在我的工程目录中,package main的下面出现了红色波浪线,显示

说明了什么问题呢?说明gopls找不到工作空间workspace。

workspace是golang1.18版本引入的新概念,就是VSCode打开的工作目录中,若是有多个mod文件,它会不知道使用哪一个,也就无法定位。但工作目录中,若是只有一个项目,那么它自然可以找到,也就可以正常“转到定义”。

我为了方便,把很多项目放在一个文件夹GOZERO下,如上图所示,因此转到定义不起作用。我如果单独打开其中一个,比如test4,就可以正常转到定义。那么这种多个项目放在一起的情况,怎么使用“转到定义”功能呢?

这就需要正确设置workspace了。

在GOZERO目录下,终端输入命令

go work init [moddir1][moddir2]...

会创建go.work文件,然后将moddir1,moddir2…归入其中。

也可以先输入go work init生成空的go.work文件,再通过

go work use [moddir1][moddir2]...

来添加。go.work的内容如下所示:

go 1.22.5use (./test4./test3
)

其中,./test4,./test3是我加入workspace的mod。再次使用“转到定义”,起作用了!

另外,如果只是让“转到定义”起作用,use中填入一项即可。只要让gopls找到workspace,即可正常跳转。

但如果想要多模块开发,就需要把所有的项目都加入到go.work文件的use列表内。

还有一点需要注意,有时候因为项目依赖,仍然无法挑战,只要使用命令

go work vendor

就可以生成依赖到vendor文件夹下,这样就可以跳转了。

关于workspace相关内容,具体可以看tools/gopls/doc/workspace.md at master · golang/tools · GitHub,也可以参考咱们国人的文章GO语言 | go work 神一般的管理 多个module没烦恼-CSDN博客

这里就不再过多赘述了。无法跳转的问题,其实还是很简单的,只是被网上各种冗余信息误导了。

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

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

相关文章

苍穹外卖 02

1.新增员工 controller: EmployeeServiceImpl: 实现controller里的save方法,要调用到mapper层的insert方法 因为员工登录成功后,会将id封装进jwt令牌,并响应给前端 所以后续请求中前端会携带jwt令牌。通过令牌可解析出被封装的…

C++:平衡搜索二叉树(AVL)

hello,各位小伙伴,本篇文章跟大家一起学习《C:平衡搜索二叉树(AVL)》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 :maple_leaf:AVL树:maple_leaf:…

大学计算机专业主要课程及概要介绍

大学计算机专业主要课程及概要介绍 大学计算机专业是一门涵盖广泛领域的学科,旨在培养学生在计算机科学与技术方面的理论知识与实践能力。该专业课程设置丰富多样,涵盖了从基础理论到高级应用的多个方面。以下是一些主要的课程及其概要介绍:…

【H.264】H.264详解(二)—— H264视频码流解析示例源码

文章目录 一、前言二、示例源码【1】目录结构【2】Makefile源码【3】h264parser.c源码【4】编译运行【5】源码下载地址 声明:此篇示例源码非原创,原作者雷霄骅。雷霄骅,中国传媒大学通信与信息系统专业博士生,在此向雷霄骅雷神致敬…

OpenHarmony 开发

本心、输入输出、结果 文章目录 OpenHarmony 开发前言JonathanOpenHarmony 并不是 AndroidOpenHarmony 应用迁移OpenHarmony 的开发流程OpenHarmony 开发 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 如果觉得本文对你有帮助,欢迎点赞、收藏、评…

2023IMO预选题几何第6题

锐角 △ A B C \triangle ABC △ABC 的外接圆为 ω \omega ω, 圆 I I I 与 ω \omega ω 内切于 A A A, 且与 B C BC BC 切于点 D D D. 设直线 A B AB AB, A C AC AC 分别与 I I I 交于点 P P P, Q Q Q, 点 M M M, N N N 在直线 B C BC BC 上, 满足 B B B 是 …

CeoMax总裁主题最新3.8.1破解免授权版/WordPress付费资源素材下载主题

CeoMax总裁主题最新3.8.1破解免授权版,一套WordPress付费资源素材下载的主题,感觉这是做资源站唯一一个可以和ripro媲美甚至超越的模板,UI很美,功能也很强大,有想学习的可下载搭建学习一下,仅供学习研究借鉴…

仿学校网页

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>学校网页</title> <style>.WebTop{backg…

誉天网络安全课程怎么样

学员服务质量保障讲师团队&#xff1a;平均5年课程交付经验&#xff0c;授课质量有保障辅导团队&#xff1a;实验论述辅导讲师&#xff0c;实验备考环境复刻&#xff0c;备考资料完善&#xff0c;及时更新就业服务&#xff1a;简历制作培训&#xff0c;面试技巧培训&#xff0c…

昇思MindSpore学习入门-轻量化数据处理

在资源条件允许的情况下&#xff0c;为了追求更高的性能&#xff0c;一般使用Pipeline模式执行数据变换Transforms。 基于Pipeline模式执行的最大特点是需要使用map方法&#xff0c;如下图中将Resize、Crop、HWC2CHW交由map调度&#xff0c;由其负责启动和执行给定的Transform…

R语言统计分析——控制流

参考资料&#xff1a;R语言实战【第2版】 语句&#xff08;statement&#xff09;是一条单独的R语言或一组复合语言&#xff08;包含在花括号{}中的一组R语言&#xff0c;使用分号分隔&#xff09; 条件&#xff08;cond&#xff09;是一条最终被解析为真&#xff08;TRUE&…

python黑马笔记

运算符&#xff1a; 算术运算符&#xff1a; 加 - 减 * 乘 / 除 // 整除 % 取余 ** 求平方 除法计算得出的结果都是小数 赋值运算符&#xff1a; 标准赋值&#xff1a; 复合赋值&#xff1a; 、 - 、 * 、 / 、// 、 ** 字符串&#xff1a; 字符串拓展内容&#xf…

护网紧急情况应对指南:Linux 应急响应手册

继上一篇&#xff1a;护网紧急情况应对指南&#xff1a;Windows版v1.2全新升级版 之后 收到小伙伴后台要Linux应急手册&#xff0c;今天给大家安排上。 《Linux应急手册》是一本为Linux系统管理员和运维工程师量身打造的实用指南&#xff0c;旨在帮助他们快速应对各种突发状况…

基于FFMPEG和SDL的音视频解码播放的实现过程与相关细节

目录 1、视频播放器原理 2、FFMPEG解码 2.1 FFMPEG库 2.2、数据类型 2.3、解码 2.3.1、接口函数 2.3.2、解码流程 3、SDL播放 3.1、接口函数 3.2、视频播放 3.3、音频播放 4、音视频的同步 4.1、获取音频的播放时间戳 4.2、获取当前视频帧时间戳 4.3、获取视…

MATLAB仿真:数字信号处理用FFT对信号分析

目录 1.实验目的 2 实验原理 3.实验仪器及设备 4.实验步骤及内容 (1)对以下序列进行谱分析。 (2)对以下周期序列进行谱分析。 (3)对模拟周期信号进行谱分析 1.实验目的 学习用 FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,…

CAS算法

CAS算法 1. CAS简介 CAS叫做CompareAndSwap&#xff0c;比较并交换&#xff0c;主要是通过处理器的指令来保证操作的原子性。 CAS基本概念 内存位置 (V)&#xff1a;需要进行CAS操作的内存地址。预期原值 (A)&#xff1a;期望该内存位置上的旧值。新值 (B)&#xff1a;如果旧…

The Llama 3 Herd of Models.Llama 3 模型论文全文

现代人工智能(AI)系统是由基础模型驱动的。本文提出了一套新的基础模型,称为Llama 3。它是一组语言模型,支持多语言、编码、推理和工具使用。我们最大的模型是一个密集的Transformer,具有405B个参数和多达128K个tokens的上下文窗口。本文对Llama 3进行了广泛的实证评价。我们…

DNS 污染/毒化——华为ensp

实验原理:1&#xff0c;用户正常访问 Web页面&#xff0c;会查询本地DNS服务器&#xff0c;一般情况下&#xff0c;本地DNS服务器会设置为 网关地址。2&#xff0c; 攻击者在 用户和网关之间&#xff0c;开启ARP攻击即可&#xff0c;这样&#xff0c;就可以让 用户访问本地DNS服…

【Ant Design Pro】快速上手

初始化 初始化脚手架&#xff1a;快速开始 官方默认使用 umi4&#xff0c;这里文档还没有及时更新&#xff08;不能像文档一样选择 umi 的版本&#xff09;&#xff0c;之后我选择 simple。 然后安装依赖。 在 package.json 中&#xff1a; "start": "cross-e…

卷积的意义及其派生(一)

1.卷积的意义 1.1从LTI的角度看 卷积最开始其实是信号处理中用来描述线性移不变系统Linear time-invariant systems的。线性&#xff0c;表明可以叠加&#xff0c;信号可以拆分成脉冲的响应&#xff1b;时不变&#xff0c;指信号不随着时间的迁移改变&#xff0c;意味着能量守…