💻

【2021年版】Goland 使い方 tips 5選

2021/12/26に公開

2021年度のターゲットは 2021.12021.3 となります。
これらのバージョンに追加された機能から、今年も5つほど選んでみます。

過去記事↓

tips1:JSON操作関連

JSON文字列からjsonタグ付き構造体の自動生成機能

こんなjson文字列をコピーして、

{
  "last_name" : "foo",
  "first_name" : "bar",
  "age" : 20
}

Golandのエディタにペーストすると、こんなダイアログが表示される。

json1

「はい」を選択すると、以下のように展開されます。

type T struct {
	LastName  string `json:"last_name"`
	FirstName string `json:"first_name"`
	Age       int    `json:"age"`
}

構造体タグでの値スタイル処理の改善

キャメルケースやスネークケースなどのパターンを候補出ししてくれるようになりました。

` を入力するとタグ候補が表示されます。
json3

いくつか候補が出てきますが、ここでは json を選んでみます。 last_name が一番最初に候補として出てきますが、ここでは last-name を選んでみます。
json4

すると、次の行で再度入力する時は、 first-name が一番最初に候補として出てきます。

json5

構造体のフィールドにタグを自動追加

構造体のフィールド上にカーソルがある状態で、 + Enter を押し、「タグにキーを追加」を選択。

json6

すると、以下のように展開されます。

json7

tips2: 後置補完の追加

.parseInt と .parseFloat

文字列リテラルもしくは文字列変数に対して、 後置置換を呼び出す . を打つと、候補が表示されるので、 parseInt を選択します。

parseint

以下のように、展開されます。

parseInt, err := strconv.ParseInt("123", 10, 64)

.varCheckError

json.Marshal のような、 ([]byte, error) を返す関数で使用すると、

varcheckerror

以下のように展開されます。 ようやくこの形に対応した後置補完が登場しました。

bytes, err := json.Marshal(&v)
if err != nil {
	return err
}

なお、 .var だと、ここまでの展開。

bytes, err := json.Marshal(&v)

.reterr だと、こう。惜しい(?)。

if _, err := json.Marshal(&v); err != nil {
	return err
}

tips3: getter/setterの自動生成

構造体のフィールド部(小文字で宣言されている必要がある)で、 + Enter で、「getterとsetterの生成」を選択する。

gettersetter

以下が生成される。

func (V *Person) LastName() string {
	return V.lastName
}

func (V *Person) SetLastName(lastName string) {
	V.lastName = lastName
}

func (V *Person) FirstName() string {
	return V.firstName
}

func (V *Person) SetFirstName(firstName string) {
	V.firstName = firstName
}

func (V *Person) Age() int {
	return V.age
}

func (V *Person) SetAge(age int) {
	V.age = age
}

tips4: go:embed や go:build 構文に対応

補完が効いてくれます。

embed

tips5: gRPCのサポート

HTTPクライアント機能に、gRPCリクエストがサポートされました。

grpc

.proto ファイルから、gRPCリクエストの生成も可能です。

おわりに

その他の追加機能についての詳細は、以下にまとまっています。

Discussion