GoLand 2020.1では、Go Modulesサポートへの多様なアップグレードのほか、ユーザーの操作をほとんど必要としないコード編集機能、コード補完の機能拡張が導入されています。
さらに、新しいコードインスペクションやクイックフィックスほか、プロジェクトを作成または読み込まずにテキストエディタ内でファイルを開くことのできる新しい LightEdit(ライト編集)モード、インテリジェントなスペルと文法チェック機能、ウェブ開発やデータベースとの連携に使用できる新機能が追加されています。
読むよりも、実際に触りながら学習する方がいいですか? IDE内の Features of GoLand 2020.1(GoLand 2020.1の機能)チュートリアルをご利用ください。
Go 1.13の環境変数であるGOPROXY
、GOPRIVATE
、GOSUMDB
、GONOPROXY
、GONOSUMB
がサポートされました。
Go Modulesプロジェクトテンプレートを使ってデフォルト値を構成できます。 Environment(環境)フィールドのBrowse(参照)アイコンをクリックし、新しいEnvironment Variables(環境変数)ダイアログを開いてください。
go.mod
ファイルで、go
、module
、require
、replace
、exclude
キーワード、依存関係の名前、ローカルパスとの置換のコード補完機能が提供されました。
Rename(名前の変更)とMove(移動)リファクタリングも利用できます。 replace
ステートメントが参照するディレクトリの名前を変更したり移動したりする場合、GoLandは適宜、go.modファイルのパスを変更します。
また、プロジェクトビューからFind Usages(使用箇所の検索)を呼び出して、特定のディレクトリへのパスが使用されているgo.mod
ファイル内の箇所を探ることができるようになりました。
GoLand 2020.1では、Alt-Enterキーを使って、欠落している依存関係をフェッチし、使用していないものを削除できるようになりました。
最後に、新しいバージョンでは、コミットにローカルパスとの置換が存在するかどうかがコミット前に通知されるようになりました。誤ったコミットをすることがなくなります。
GoLand 2020.1 は if err != nil { ... }
を提案してエラー処理パターンを補完します。 式内で if
を入力してください。
type
キーワードまたはstruct
とinterface
を入力するだけで、構造体とインターフェースの型を素早く定義できます。
Fill Fields(フィールドを埋める)アクションは、フォーマット規則で必要な場合に、コロンの後にスペースを追加します。 また、複合リテラルの宣言において、ステートメントの最後にコンマを追加します。
マップを扱う場合、キー型を完了した後、コード補完機能は閉じかっこの後にカーソルを移動します。
関数の戻り値の型については、対応する戻り値の型に適切なローカル変数とゼロ値を提案します。
スマートなコード補完は、構造体の初期化子へのポインタを提案します。
また、アサーションと型のSwitch caseで互換性のある型も提案します。
型のアサーションでは、代入された変数の型を提案します。
最後に、式で可能性のあるポインタの提案リストを示します。
コメントに使用できる Basic Code Completion 機能が追加されました。ドキュメントの記述が非常に楽になります。 現在のパッケージの宣言に使用する名前や、関数とメソッドのパラメータ名を提案します。
その他、Basic Code Completion 機能は、リテラルと変換を提案します。
GoLand 2020.1は、複数の値のretun関数のシグネチャーを記述する際、コンマの後の戻り値の型をかっこで囲みます。
文字列リテラルでテキストを貼り付ける場合、IDEは二重引用符をエスケープ処理します。
ユーザーの操作を必要としない編集機能については、「Editing Features You Didn’t Know About(ユーザーが知らないGoLand編集機能)」の記事を参照してください。
Go 1.14の重複インターフェースの組み込みに合わせて、GoLandでもサポートすることになりました。 重複インターフェースを使用して型のさまざまな側面を記述する際、GoLandは、そのメソッドの重複を検出してもエラーとして報告しません。
Go 1.14 では、モジュールのルートにベンダー・ディレクトリが含まれる場合、ベンダリングモードが自動的に有効化されます。 GoLand 2020.1に関しては、バージョン1.13以前のGoに対して同様の振る舞いを実装することにしました。 IDEは、モジュール内に vendor/ フォルダがある場合、インポートを自動的にそのフォルダに解決します。
デバッグ中またはコアダンプ解析中にgoルーチンをより簡単に区別できるよう、プロファイララベルを追加しました。
詳細は、「How to Find Goroutines During Debugging(デバッグ中にgoルーチンを検索するには)」を参照してください。
マクロをパラメータとして使用し、アプリケーションを実行またデバッグできるようになりました。 Run/Debug Configurations(実行/デバッグの構成)ダイアログで、Go Tool(Goツール)またはProgram arguments(プログラムの引数)フィールドの「+」をクリックし、使用できるマクロのリストが記載された新しい Macros(マクロ)ダイアログを開いてください。
また、プロジェクトに構成ファイルを保存できるようになりました。 プロジェクトファイルのオプションとして、Run/Debug Configurations(実行/デバッグの構成)ダイアログの上部にあるStore(保存)を選択してください。
.else
のPostfix Completion(後置補完)テンプレートを使うと、if
ステートメントを素早く追加して、式がfalseであるかどうかをチェックできます。
Alt+Enterキーを押すと、書式設定ではない呼び出しを即時に書式設定の呼び出しに変更できます。
Create variable(変数の作成)クイックフィックスでは、期待される型のヒントが表示されるようになったため、正しい値の入力がさらに簡単になりました。
この新しいコードインスペクションは、ポインタレシーバでないものに対するポインタメソッドの無効な呼び出しに関して警告し、クリックフィックスを提供します。
uintptrからunsafe.Pointerの無効な変換を検査するコードインスペクションでは、整数からポインタに変換する際にuintptr
とunsafe.Pointer
が誤って使用されていることが警告されます。
Unmarshal is called with incorrect argument(誤った引数でUnmarchalを呼び出し)インスペクションでは、json.Unmarshal
や、encoding/json
、encoding/xml
、およびencoding/gob
パッケージの類似する関数への呼び出しが解析されます。
Locks mistakenly passed by value(値で誤って渡されたロック)コードインスペクションでは、ロックを含む値を誤ってコピーしないようにすることができます。
宣言のグループを素早く作成するための新しいテンプレートを追加しました。 consts
、vars
、types
、imports
などが含まれます。 こういったテンプレートを使用すると、GoLandは宣言名を波括弧で囲みます。
fori
テンプレートは、従来のforループのボイラープレートコードをボイラープレートを挿入します。
Extract Method(メソッドの抽出)リファクタリングは、親関数とメソッドのパラメータの元の順を維持します。
Rename(名前を変更)リファクタリングは、宣言の名前変更を自動的に検出するようになりました。 手動で宣言の名前を変更すると、IDEは、そのすべての使用箇所で名前を変更するように、ガターアイコンを示します。
Navigate to implementations(実装にナビゲート)(Ctrl+Alt+B)とNavigate to Declaration or Usages(宣言または使用箇所にナビゲート)(Ctrl+B)は、最初に現在のプロジェクトの結果を表示するようになりました。
また、Find Usages(使用箇所の検索)(Alt+F7)アクションは、常にデフォルトでインターフェースのメソッドの使用箇所を検索するようになりました。 以前のように、現在のメソッドの使用箇所を検索するには、 Alt+Shift+Ctrl+F7 を使用してください。
新しい Commit(コミット)ツールウィンドウに、Local Changes(ローカルの変更)タブとShelf(シェルフ)タブが統合されました。 このツールウィンドウで、diffのチェック、コミットするファイルとチャンクの選択、コミットメッセージの入力など、コミット関連のすべてのタスクを実行できます。 Commit ツールウィンドウは縦型で画面の左側に配置されているため、エディタ全体でdiffを表示することができます。
Branches(ブランチ)ポップアップは、次のように改善されています。
Interactively Rebase from Here(ここからインタラクティブにリベースする) の大幅な改善を試みました。 このダイアログでは、コミット履歴の直線性を高めて把握しやすくするために、過去のコミットを編集、結合、および削除することができます。
このダイアログを起動するには、Git ツールウィンドウのLog タブに移動し、一連のコミットから編集しようとしている最も古いコミットを選択し、右クリックして Interactively Rebase from Here を選択してください。
新しいスマートインテンションと分析 (Alt+Enter) を使って、よりスピーディにコーディングしましょう! 例えば、JavaScript と TypeScript の最新バージョンに導入された構文である、オプションの chaining および / または nullish coalescing (null合体演算子) に既存のコードを素早く変換することができます。
JavaScriptとTypeScriptでは、Documentation(ドキュメント)ポップアップに、シンボルの型と可視性に関する詳細やそのシンボルが定義されている場所など、さらに有益な情報が表示されるようになりました。