Go言語コードの改行ルールの詳細説明

この記事では、基本概念から実践的なアプリケーションの実践まで、Go でのコード改行のあらゆる側面を詳しく説明します。

[TechLeadCloud] をフォローして、インターネット アーキテクチャとクラウド サービス テクノロジーに関する全次元の知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品開発の経験、およびチーム管理の経験があり、復旦大学の同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud によって認定された上級アーキテクトです。プロジェクト管理のプロフェッショナルであり、数億の収益を誇る AI 製品の研究開発を担当しています。

ファイル

1. Go コードにおける改行の概念

コードの改行、またはコードの折り返しは、プログラミングにおいて一般的ではありますが、見落とされがちな詳細です。これには、コードが複数行構造として表示されるように、コード行の末尾に改行文字を追加する方法が含まれます。コードの改行は、コードの読みやすさや美しさに影響を与えるだけでなく、プログラミング言語の構文、コンパイラの動作、ツール チェーンの相互作用にも関連する可能性があります。Go 言語では、Go 独自の改行ルールとツールのサポートのため、この概念は特に重要です。

コードに改行が必要なのはなぜですか?

可読性

コードの改行の最初の目的は、コードの可読性を向上させることです。長いコード行は、特にコードが論理的に複雑な場合や複数の演算子が関与する場合、一目で読みにくい場合があります。

// 不佳的代码断行
if x > 0 && y > 0 && z > 0 && a > 0 && b > 0 { doSomething() }

// 优雅的代码断行
if x > 0 &&
   y > 0 &&
   z > 0 &&
   a > 0 &&
   b > 0 {
  doSomething()
}

出力: 複雑な条件ステートメントを改行することで理解しやすくします。

文法要件

一部のプログラミング言語には、厳密なコード改行規則があります。Go 言語の改行ルールは比較的緩いですが、一部の特定のシナリオ (たとえば、行の末尾での,代わりの使用;) には明確な要件があります。

// 错误示例:Go不允许在声明中的最后一个字段后添加逗号
var x = []int{1, 2, 3,}

// 正确示例
var x = []int{1, 2, 3}

出力: Go では、配列またはスライス宣言の最後の要素の後にカンマがあってはいけないことに注意してください。

Go言語の改行ツール

ゴーフムト

Go にはgofmt、コードの改行を含むコードの自動フォーマットに使用する というツールが用意されています。

元のコード:

func foo(x,y int)int{return x+y}

実行後gofmt:

func foo(x, y int) int { return x + y }

出力:gofmtコードを読みやすくするために、コードの改行とスペースが自動的に追加されます。

ゴーインポート

goimportsは Go コードを自動整形するツールで、それgofmtに基づいて import ステートメントを自動的に処理する機能を追加します。

元のコード:

package main
func main() { fmt.Println("Hello, world!") }

実行後goimports:

package main

import "fmt"

func main() { fmt.Println("Hello, world!") }

出力:goimports欠落しているimport宣言が自動的に追加され、コードが改行されます。

ここでは、Go コードの改行の基本概念、それが必要な理由、およびコードの改行をより適切に処理するために Go 固有のツールがどのように役立つかを詳しく紹介します。これは、Go コードの改行の詳細とアプリケーション シナリオをさらに調査するための強固な基盤を築きます。


2. Go コードの改行練習

Go コードにおける改行の基本概念を理解した後、これらのルールとツールを実際のプログラミング実践に適用する方法を見てみましょう。ここでは、さまざまなシナリオでの改行の実践、IDE と改行、およびプロジェクト内で改行ルールを統一する方法について説明します。

さまざまなシナリオでの改行練習

関数の宣言と呼び出し

関数の宣言と呼び出しでは、パラメーターが多すぎる場合に、コードの読みやすさを向上させるために改行が必要になることがよくあります。

// 不佳的函数声明
func add(x, y, z, a, b, c int, s1, s2, s3 string) int {
  return x + y + z + a + b + c
}

// 优雅的函数声明
func add(
  x, y, z int,
  a, b, c int,
  s1, s2, s3 string,
) int {
  return x + y + z + a + b + c
}

出力: 複数のパラメーターを明確に配置するには、改行を使用します。

構造とインターフェース

Go 言語の構造体宣言やインターフェース宣言では改行にも注意する必要があります。

// 不佳的结构体声明
type Person struct{FirstName, LastName string; Age int}

// 优雅的结构体声明
type Person struct {
  FirstName string
  LastName  string
  Age       int
}

出力: ブレークを使用して構造フィールドを見やすくします。

フロー制御ステートメント

ifなどのフロー制御ステートメントに複数の条件や複雑な式が含まforれる場合switch、改行を使用すると読みやすくなります。

// 不佳的if语句
if x>0 && y>0 || z==0 && a!=0 { doSomething() }

// 优雅的if语句
if (x > 0 && y > 0) ||
   (z == 0 && a != 0) {
  doSomething()
}

出力: 適切な改行を使用して複雑な if 条件を解釈しやすくします。

IDE与断行

自動フォーマット

最新の IDE のほとんどは、自動改行を含む Go 言語の自動フォーマットをサポートしています。

gofmtVS Code では、または を自動的に実行できますgoimports

出力: IDE の自動フォーマット機能を使用すると、Go の改行ルールに簡単に従うことができます。

ショートカットキー

IDE が提供するショートカット キーを使用して、コード行をすばやく分割します。

IntelliJ IDEA または GoLand では、Alt+Enterショートカット キーを使用して素早く改行できます。

出力: ショートカット キーを使用すると、コードの作成中に非常に便利に改行できます。

プロジェクト間で改行ルールを統一する

設定ファイル

などの設定ファイルを共有することで、改行ルールをチーム全体で統一できます.editorconfiggo.project

.editorconfig次のルールをファイルに追加します。

[*.{go}]
indent_style = space
indent_size = 2

出力: このようにして、チーム メンバーの IDE はこれらの改行ルールとインデント ルールを自動的に採用します。

CI/CDの統合

CI/CD プロセスにgofmtORを統合するとgoimports、プロジェクト内のすべてのコードが統一された改行ルールに従うようになります。

GitHub アクションで設定します。

jobs:
  gofmt:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2

      - name: Run gofmt
        run: test -z $(gofmt -l .)

出力: コードがgofmtルールに従ってフォーマットされていない場合、CI/CD プロセスは失敗します。

このセクションでは、実際の G​​o プログラミング実践で改行ルールとツールを適用する方法 (さまざまなコーディング シナリオでのベスト プラクティスを含む)、および IDE レベルとプロジェクト レベルで改行ルールを統一する方法について詳しく説明します。このコンテンツが、Go プログラミングで改行をより効果的に使用し、コードの品質と保守性を向上させるのに役立つことを願っています。

[TechLeadCloud] をフォローして、インターネット アーキテクチャとクラウド サービス テクノロジーに関する全次元の知識を共有してください。著者は 10 年以上のインターネット サービス アーキテクチャ、AI 製品開発の経験、およびチーム管理の経験があり、復旦大学の同済大学で修士号を取得し、復丹ロボット知能研究所のメンバーであり、Alibaba Cloud によって認定された上級アーキテクトです。プロジェクト管理のプロフェッショナルであり、数億の収益を誇る AI 製品の研究開発を担当しています。お役に立ちましたら、TeahLead KrisChang にもっと注目してください。インターネットおよび人工知能業界で 10 年以上の経験、技術チームおよびビジネス チームの管理で 10 年以上の経験、同済大学でソフトウェア エンジニアリングの学士号、エンジニアリング管理の修士号を取得しています。 Fudan 出身。Alibaba Cloud 認定クラウド サービスのシニア アーキテクト、収益 1 億を超える AI 製品ビジネスの責任者。

Microsoft、新しい「Windowsアプリ」 .NET 8を正式にGAリリース、最新LTSバージョン XiaomiはXiaomi Velaが完全にオープンソースであり、基盤となるカーネルはNuttXであることを正式に発表 Alibaba Cloud 11.12 障害の原因が明らかに:Access Key Service(アクセスKey) 例外 Vite 5 が正式にリリースされた GitHub レポート : TypeScript が Java に取って代わり、3 番目に人気のある言語になる Rust で Prettier を書き換えるために数十万ドルの報酬を提供 オープンソース作者に「プロジェクトはまだ生きていますか?」と尋ねる 非常に失礼で、失礼な バイトダンス: AI を使用して Linux カーネル パラメータ 演算子を自動的に調整する 魔法の操作: バックグラウンドでネットワークを切断し、ブロードバンド アカウントを無効化し、ユーザーに光モデムの変更を強制する
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/6723965/blog/10122433