Cursor 下配置 golang

最近 Cursor 、Cline、 Trae 等 AI 工具 大行其道,而这些都是基于 VSCode 这个底座开发的,所以对于之前用其他 IDE 的同学,如果想尝试上述工具,就得先配置环境。为了方便广大 Gopher 熟悉此类工具,特意写了这篇 Cursor 中初始化 golang 配置说明。

1. 安装 golang

从官网下载[1]对应的操作系统版本

1.1 linux

linux 下需要手动安装,安装包下载完之后,在安装包目录下执行 shell 命令

bash 复制代码
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.16.6.linux-amd64.tar.gz

然后修改 ~/.bashrc 文件,添加如下命令,以保证能够在全局查找到 go 命令

ruby 复制代码
export PATH=$PATH:/usr/local/go/bin

最后如果运行 go version 能够正常输出 go 的版本,说明安装成功

2. 环境变量

配置环境变量

修改环境变量 GOPATH 可以修改依赖包下载的默认路径

打开命令行运行 go,如果提示命令找不到,则将 GO 可执行文件所在目录添加到 PATH 中。

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct

运行以上命令切换 GO 包下载源到国内源。

3. VS Code 插件

在 VS Code 中搜素 GO 插件[2],然后安装。

null

安装go扩展图

图 3.1

安装完之后,VS Code 会提示你需要安装工具:

null

图 3.2

这个时候,需要选择 Install All 这个按钮,会将 go 所需的所有命令行工具全部安装。如果没有出现图 3.2 的提升,可以在项目中任意go文件中,鼠标右键选择 Go: Show All Commands...,也可以通过按F1键打开命令执行面板,

null

vscode09

图 3.3

输入go:install,即可筛选出安装命令列表,然后选择 Go: Install/Update Tools 命令

全选进行安装。

null

vscode11

图 3.4

如果开始安装后提示错误 command 'go.tools.install' not found ,则有可能是你先打开了 VSCode,然后安装的 GO 的运行时程序,这时候 VSCode 没有读取到追加到 PATH 环境变量的 GO 可执行程序所致。重启 VSCode,然后重新执行 图 3.3 即可。

不管用哪种方式触发安装命令行工具,都会弹出如下窗口:

null

vscode12

图 3.5

go 语言的代码格式校验(比如说缩进)和代码安全性校验(比如定义的变量未被使用)是分成两个工具进行操作的,前者使用 golint[3],后者默认是 gofmt[4]。vs code 对于不符合 golint 规则的情况,会选择做在代码下面标识红色或者黄色的波浪线,但是对于不符合格式化校验的情况,却不予理睬,这个跟其他语言的情况不一样,比如说 js 中使用 eslint 工具时里面的规则同时对代码格式和安全性校验做约束,不管哪条预定的规则不满足,都会有波浪线提示。

4. 调试 GO

创建一个文件夹,用 VS Code 打开,然后创建文件 main.go:

go 复制代码
package main

import "fmt"

var name = "世界"

func main() {
    year := 2021
    fmt.Println("Hello", name, year)
}

ctrl+shift+p 输入 Debug: Open launch.json 打开 launch.json 文件,如果第一次打开,会新建一个配置文件,默认配置内容如下

bash 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}/main.go",
            "showGlobalVariables": true,
            "env": {},
            "args": []
        }
    ]
}
null

图 4.1

在第 6 行加断点,然后运行调试,会看到上图断点生效了。

新版本的 Go 默认需要设置为 module 才能被编译,否则在运行的时候会提示 module 找不到,解决的方案是在项目根目录运行 go mod init gitlab.com/your_package_name, 运行完成后会在当前项目根目录生成一个 go.mod,再次运行调试就不会出错。

如果使用了包含 c/c++ 的包,需要操作系统中有编译环境,debian 内核中可以通过 apt-get install build-essential -y 来安装,centos 下可以使用 yum groupinstall "Development Tools" 来安装。

如果你的项目的入口文件不在根目录,假设是在项目的 src 文件夹下,那么除了指定 program 属性外,还需要指定 cwd 属性:

kotlin 复制代码
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Package",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "cwd": "${workspaceFolder}/src/",
            "showGlobalVariables": true,
            "program": "${workspaceFolder}/src/main.go"
        }
    ]
}

引用链接

[1] 下载: golang.org/dl/
[2] GO 插件: marketplace.visualstudio.com/items?itemN...
[3] golint: github.com/golang/lint
[4] gofmt: golang.org/cmd/gofmt/

本文使用 文章同步助手 同步

相关推荐
一个热爱生活的普通人10 分钟前
如何开发一个可以在命令行执行的Coding Agent
人工智能·go·aigc
丘山子2 小时前
如何确保 Go 系统在面临超时或客户端主动取消时,能够优雅地释放资源?
后端·面试·go
岁忧5 小时前
(LeetCode 面试经典 150 题) 169. 多数元素(哈希表 || 二分查找)
java·c++·算法·leetcode·go·散列表
丘山子5 小时前
了解 Go Channel
后端·面试·go
mCell5 小时前
密码校验与攻击面:不再“裸奔”的防线
后端·安全·go
DemonAvenger8 小时前
Go高并发场景下内存管理最佳实践
性能优化·架构·go
mxpan8 小时前
VC++ 与 Golang 的协作:实现 HTTP 文件传输服务
c++·go·mfc
程序员爱钓鱼9 小时前
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
后端·google·go
Code季风1 天前
深入实战 —— Protobuf 的序列化与反序列化详解(Go + Java 示例)
java·后端·学习·rpc·golang·go