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/

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

相关推荐
研究司马懿4 小时前
【云原生】Gateway API高级功能
云原生·go·gateway·k8s·gateway api
梦想很大很大17 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
lekami_兰1 天前
MySQL 长事务:藏在业务里的性能 “隐形杀手”
数据库·mysql·go·长事务
却尘1 天前
一篇小白也能看懂的 Go 字符串拼接 & Builder & cap 全家桶
后端·go
ん贤1 天前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁
mtngt112 天前
AI DDD重构实践
go
Grassto3 天前
12 go.sum 是如何保证依赖安全的?校验机制源码解析
安全·golang·go·哈希算法·go module
Grassto5 天前
11 Go Module 缓存机制详解
开发语言·缓存·golang·go·go module
程序设计实验室6 天前
2025年的最后一天,分享我使用go语言开发的电子书转换工具网站
go
我的golang之路果然有问题6 天前
使用 Hugo + GitHub Pages + PaperMod 主题 + Obsidian 搭建开发博客
golang·go·github·博客·个人开发·个人博客·hugo