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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。