amtoaer

晓风残月

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

Visual Studio Code Golang 刷题指北

関係のない雑談#

ブログを更新していないことに気づいたので、最近解答リポジトリをリメイクした README を持ってきて、記事を書いてみます!

最近、現在の NAS である z4 を手放すことを考えています。自分で性能の良い NAS を組み立て、ARM の Mac に x86 のリモート開発環境を提供する予定です。近々、自分の試行錯誤のプロセスを説明するシリーズの記事を更新するかもしれませんので、お楽しみに!~

本文#

最近、気まぐれで問題を解くことにしました。VSCode で問題のリポジトリを開いたところ、以前のディレクトリ構造にいくつかの問題があることに気付きました:

  1. フォルダ名が中国語であるため、go mod が認識できませんでした(以前は正常に単体テストができたのは、goland がテストを英語の一時ディレクトリにコピーしていたためです)
  2. 多くの古い問題の組み込みデータ型が含まれていないため、フォルダ名を変更して正常に認識しても、構文エラーが発生します

そこで、過去のコードをすべて削除することにしました。このリメイクの目的は次のとおりです:

  1. 問題のリポジトリを開いたときに、すべてのファイルが正常に認識されること
  2. 各ファイルには個別のユニットテストがあり、一括実行できること

実現方法:

  1. プロジェクトのルートディレクトリに Go プロジェクトを作成します
     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 を入力し、いくつかのタブを押すと、テストケースがすべて表示されます!

Xnip2023-07-02_10-58-00

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。