amtoaer

晓风残月

叹息似的渺茫,你仍要保存着那真!
github
x
telegram
steam
nintendo switch
email

Visual Studio Code Golang 刷题指北

无关的碎碎念#

看了看好久没有更新博客了,把前段时间刷题仓库 remake 后写的 readme 拿过来水篇文章先!

最近打算出掉现在的极空间 z4,自己组个性能好点的 NAS,顺便给 arm 的 mac 提供一个 x86 的远程开发环境。应该大概也许可能会在近期更新一个系列文章描述一下自己的折腾过程,敬请期待!~

正文#

最近心血来潮想要刷题,使用 vscode 打开刷题仓库后发现之前的目录结构有不少的问题:

  1. 文件夹是中文导致 go mod 无法识别(之前能够正常单测是因为 goland 会将单测拷贝到一个纯英文的临时目录)
  2. 很多旧题目的内置数据类型没有被包含在内,导致即使将文件夹更名并正常识别后也会出现语法错误

于是决定甩开历史包袱,将过往的代码全部移除。这次 remake 主要为了确保:

  1. 打开刷题仓库目录,所有文件都能被正常识别
  2. 每个文件都有单独的单元测试,可供批量运行

实现方式:

  1. 在项目根目录创建 golang 项目
     go mod init github.com/amtoaer/leetcode
    
  2. 安装 labuladong 的 vscode-leetcode 插件
  3. 将刷题语言设置为 go,文件保存目录设置为项目根目录
     "leetcode.workspaceFolder": "/Users/amtoaer/Documents/code/go/go-leetcode",
     "leetcode.defaultLanguage": "golang",
    
  4. 设置文件保存的具体路径(英文无空格)和带有单元测试的文件模板

注意:
现有的 LeetCode 拓展并不支持使用题目的英文名称作为变量,因此为了实现使用英文路径的效果,需要关闭题目翻译。

 "leetcode.useEndpointTranslation": false,
 "leetcode.filePath": {
     "default": {
     "folder": "${id}.${camelCaseName}",
     "filename": "solution_test.${ext}"
     }
 },
 "leetcode.codeTemplate": "package main\n\nimport (\n\t\"testing\"\n)\n\n${code}\n\nfunc Test(t *testing.T) {\n}",
  1. gofmt 不会限制行长度,可能会出现过长的代码行,换用 golines 做代码格式化
     "editor.formatOnSave": true,
     "go.alternateTools": {
         "customFormatter": "/Users/amtoaer/.go/bin/golines"
     },
     "go.formatTool": "custom"
    

贴几张经过配置后的刷题图片:

  1. 编辑器内刷题
    Xnip2023-07-02_10-43-51

  2. 正常代码补全
    Xnip2023-07-02_10-53-29

  3. 运行单元测试
    Xnip2023-07-02_10-45-23

  4. 批量运行单元测试
    Xnip2023-07-02_10-46-15


什么,你问我测试样例是不是自己打的?

当然不是!这种工作 copilot 会为你效劳的。输入 assert.Equal,多敲几个 tab,测试样例就全有啦!

Xnip2023-07-02_10-58-00

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。