技術共有

Go言語の詳細なチュートリアル

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Go 言語は Golang とも呼ばれ、Google によって設計されたオープンソース プログラミング言語です。効率的な開発速度、優れたパフォーマンス、簡潔な構文、強力な標準ライブラリを提供するように設計されています。 Go 言語は、大規模な分散システムやマイクロサービス アーキテクチャの構築に特に適しています。この記事は、Go 言語をゼロから学習するのに役立ち、基本的な構文、高度な機能、ベスト プラクティス、実用的なアプリケーションについて説明します。

下部にあるプロジェクトのソースコードを参照してください

1. Go言語の基礎

1.1 Go 環境をインストールする

まず、コンピューターに Go 環境をインストールする必要があります。 Go公式ウェブサイトにアクセスしてください(https://golang.org/dl/) オペレーティング システムに適した Go 言語パッケージをダウンロードし、指示に従ってインストールします。

1.2 ハローワールドプログラム

行く

ダークバージョン

  1. 1package main
  2. 2
  3. 3import "fmt"
  4. 4
  5. 5func main() {
  6. 6 fmt.Println("Hello, World!")
  7. 7}

1.3 データ型

Go 言語は、整数 (int、int8、int16、int32、int64)、浮動小数点型 (float32、float64)、ブール値 (bool)、文字列 (string) などを含むさまざまな組み込みデータ型を提供します。

1.4 制御構造

Go 言語は、プログラムのフローを制御するための if ステートメント、for ループ、switch ステートメント、defer ステートメントをサポートしています。

1.5 機能

関数は Go 言語の基本的な実行単位です。関数はパラメータを受け取り、結果を返すことができます。

行く

ダークバージョン

  1. 1func add(x int, y int) int {
  2. 2 return x + y
  3. 3}

1.6 ポインタ

ポインタは Go 言語でメモリ アドレスを直接操作するために使用されます。を使用して*そして&演算子を使用すると、変数のアドレスとそのアドレスが指す値を取得できます。

行く

ダークバージョン

  1. 1func increment(p *int) {
  2. 2 *p++
  3. 3}

2. 高度な Go 言語

2.1 インターフェース

Go のインターフェイスは、型が実装する必要があるメソッドのセットを定義します。インターフェイスにより、コードがより柔軟になり、再利用可能になります。

行く

ダークバージョン

  1. 1type Shape interface {
  2. 2 Area() float64
  3. 3}
  4. 4
  5. 5type Circle struct {
  6. 6 Radius float64
  7. 7}
  8. 8
  9. 9func (c Circle) Area() float64 {
  10. 10 return math.Pi * c.Radius * c.Radius
  11. 11}

2.2 エラー処理

Go 言語では、例外を処理するためにエラー戻り値を使用することを推奨しています。

行く

ダークバージョン

  1. 1func divide(x, y int) (int, error) {
  2. 2 if y == 0 {
  3. 3 return 0, errors.New("cannot divide by zero")
  4. 4 }
  5. 5 return x / y, nil
  6. 6}

2.3 同時実行性とゴルーチン

Go 言語の同時実行モデルは、軽量のゴルーチンとチャネルに基づいています。 Goroutine は Go 言語のユーザーレベルのスレッドであり、Goroutine 間の通信と同期にはチャネルが使用されます。

行く

ダークバージョン

  1. 1func say(s string) {
  2. 2 for i := 0; i < 5; i++ {
  3. 3 fmt.Println(s)
  4. 4 }
  5. 5}
  6. 6
  7. 7func main() {
  8. 8 go say("world") // 开始一个新的goroutine
  9. 9 say("hello")
  10. 10}

2.4 コンテキスト

コンテキストは、ゴルーチン間でキャンセル信号を渡すために使用され、プログラムが長時間実行されているゴルーチンを正常に終了できるようにします。

行く

ダークバージョン

  1. 1func main() {
  2. 2 ctx, cancel := context.WithCancel(context.Background())
  3. 3 go func() {
  4. 4 select {
  5. 5 case <-ctx.Done():
  6. 6 fmt.Println("operation canceled")
  7. 7 case <-time.After(time.Second * 3):
  8. 8 fmt.Println("operation completed")
  9. 9 }
  10. 10 }()
  11. 11 time.Sleep(time.Second)
  12. 12 cancel()
  13. 13}

3. Go 言語のベストプラクティス

3.1 コードの構成

Go 言語では、コードを整理するためにモジュール型アプローチを使用することを推奨しています。各ディレクトリはパッケージを表し、その中に 1 つ以上の .go ファイルを定義します。

3.2 依存関係の管理

Go モジュール システム (go mod ) は、プロジェクトの外部依存関係を管理するために使用されます。使用go getそしてgo mod tidy依存関係を追加および整理するコマンド。

3.3 テスト

Go 言語には強力なテスト フレームワークが組み込まれています。testingテストケースを作成するためのパッケージ。

行く

ダークバージョン

  1. 1import (
  2. 2 "testing"
  3. 3)
  4. 4
  5. 5func TestAdd(t *testing.T) {
  6. 6 tests := []struct {
  7. 7 x, y, want int
  8. 8 }{
  9. 9 {2, 2, 4},
  10. 10 {1, 3, 4},
  11. 11 {0, 0, 0},
  12. 12 }
  13. 13 for _, tt := range tests {
  14. 14 got := add(tt.x, tt.y)
  15. 15 if got != tt.want {
  16. 16 t.Errorf("add(%d, %d) = %d; want %d", tt.x, tt.y, got, tt.want)
  17. 17 }
  18. 18 }
  19. 19}

3.4 構築と展開

使用go build実行可能ファイルをビルドするコマンド。go installプロジェクトを次の場所にインストールします$GOPATH/binシステムコールを容易にするためのディレクトリ。

4. Go言語の実用化

Go 言語は、バックエンド サービス、ネットワーク プログラミング、マイクロサービス アーキテクチャ、DevOps ツール、データベース、ミドルウェア、その他のシナリオで広く使用されています。

4.1 マイクロサービスアーキテクチャ

Go 言語の同時実行性の高さは、マイクロサービスの構築に理想的な選択肢となります。

4.2 ネットワークプログラミング

Go 言語の標準ライブラリは、HTTP サーバー、クライアント、WebSocket、TCP/IP などを含む豊富なネットワーク プログラミング API を提供します。

4.3 DevOps ツール

Go 言語はコンパイル速度が速く、移植性が高いため、コンテナ オーケストレーション、継続的インテグレーション、継続的デプロイメント ツールなどの DevOps ツールの開発に適しています。

5. まとめ

Go 言語は、その簡潔な構文、強力な標準ライブラリ、効率的な同時実行モデルにより、徐々に現代のソフトウェア開発の主流言語の 1 つになりました。この記事を学ぶことで、Go 言語の基本知識を習得するだけでなく、その高度な機能とベスト プラクティスも理解し、将来の Go 言語開発のための強固な基盤を築くことができます。高性能のバックエンド サービスを構築している場合でも、複雑な分散システムを開発している場合でも、Go 言語は不可欠なパートナーになります。

プロジェクトのソース コードのダウンロード アドレス:https://download.csdn.net/download/qq_42072014/89531977