私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Go 言語は Golang とも呼ばれ、Google によって設計されたオープンソース プログラミング言語です。効率的な開発速度、優れたパフォーマンス、簡潔な構文、強力な標準ライブラリを提供するように設計されています。 Go 言語は、大規模な分散システムやマイクロサービス アーキテクチャの構築に特に適しています。この記事は、Go 言語をゼロから学習するのに役立ち、基本的な構文、高度な機能、ベスト プラクティス、実用的なアプリケーションについて説明します。
下部にあるプロジェクトのソースコードを参照してください
まず、コンピューターに Go 環境をインストールする必要があります。 Go公式ウェブサイトにアクセスしてください(https://golang.org/dl/) オペレーティング システムに適した Go 言語パッケージをダウンロードし、指示に従ってインストールします。
行く
ダークバージョン
- 1package main
- 2
- 3import "fmt"
- 4
- 5func main() {
- 6 fmt.Println("Hello, World!")
- 7}
Go 言語は、整数 (int、int8、int16、int32、int64)、浮動小数点型 (float32、float64)、ブール値 (bool)、文字列 (string) などを含むさまざまな組み込みデータ型を提供します。
Go 言語は、プログラムのフローを制御するための if ステートメント、for ループ、switch ステートメント、defer ステートメントをサポートしています。
関数は Go 言語の基本的な実行単位です。関数はパラメータを受け取り、結果を返すことができます。
行く
ダークバージョン
- 1func add(x int, y int) int {
- 2 return x + y
- 3}
ポインタは Go 言語でメモリ アドレスを直接操作するために使用されます。を使用して*
そして&
演算子を使用すると、変数のアドレスとそのアドレスが指す値を取得できます。
行く
ダークバージョン
- 1func increment(p *int) {
- 2 *p++
- 3}
Go のインターフェイスは、型が実装する必要があるメソッドのセットを定義します。インターフェイスにより、コードがより柔軟になり、再利用可能になります。
行く
ダークバージョン
- 1type Shape interface {
- 2 Area() float64
- 3}
- 4
- 5type Circle struct {
- 6 Radius float64
- 7}
- 8
- 9func (c Circle) Area() float64 {
- 10 return math.Pi * c.Radius * c.Radius
- 11}
Go 言語では、例外を処理するためにエラー戻り値を使用することを推奨しています。
行く
ダークバージョン
- 1func divide(x, y int) (int, error) {
- 2 if y == 0 {
- 3 return 0, errors.New("cannot divide by zero")
- 4 }
- 5 return x / y, nil
- 6}
Go 言語の同時実行モデルは、軽量のゴルーチンとチャネルに基づいています。 Goroutine は Go 言語のユーザーレベルのスレッドであり、Goroutine 間の通信と同期にはチャネルが使用されます。
行く
ダークバージョン
- 1func say(s string) {
- 2 for i := 0; i < 5; i++ {
- 3 fmt.Println(s)
- 4 }
- 5}
- 6
- 7func main() {
- 8 go say("world") // 开始一个新的goroutine
- 9 say("hello")
- 10}
コンテキストは、ゴルーチン間でキャンセル信号を渡すために使用され、プログラムが長時間実行されているゴルーチンを正常に終了できるようにします。
行く
ダークバージョン
- 1func main() {
- 2 ctx, cancel := context.WithCancel(context.Background())
- 3 go func() {
- 4 select {
- 5 case <-ctx.Done():
- 6 fmt.Println("operation canceled")
- 7 case <-time.After(time.Second * 3):
- 8 fmt.Println("operation completed")
- 9 }
- 10 }()
- 11 time.Sleep(time.Second)
- 12 cancel()
- 13}
Go 言語では、コードを整理するためにモジュール型アプローチを使用することを推奨しています。各ディレクトリはパッケージを表し、その中に 1 つ以上の .go ファイルを定義します。
Go モジュール システム (go mod
) は、プロジェクトの外部依存関係を管理するために使用されます。使用go get
そしてgo mod tidy
依存関係を追加および整理するコマンド。
Go 言語には強力なテスト フレームワークが組み込まれています。testing
テストケースを作成するためのパッケージ。
行く
ダークバージョン
- 1import (
- 2 "testing"
- 3)
- 4
- 5func TestAdd(t *testing.T) {
- 6 tests := []struct {
- 7 x, y, want int
- 8 }{
- 9 {2, 2, 4},
- 10 {1, 3, 4},
- 11 {0, 0, 0},
- 12 }
- 13 for _, tt := range tests {
- 14 got := add(tt.x, tt.y)
- 15 if got != tt.want {
- 16 t.Errorf("add(%d, %d) = %d; want %d", tt.x, tt.y, got, tt.want)
- 17 }
- 18 }
- 19}
使用go build
実行可能ファイルをビルドするコマンド。go install
プロジェクトを次の場所にインストールします$GOPATH/bin
システムコールを容易にするためのディレクトリ。
Go 言語は、バックエンド サービス、ネットワーク プログラミング、マイクロサービス アーキテクチャ、DevOps ツール、データベース、ミドルウェア、その他のシナリオで広く使用されています。
Go 言語の同時実行性の高さは、マイクロサービスの構築に理想的な選択肢となります。
Go 言語の標準ライブラリは、HTTP サーバー、クライアント、WebSocket、TCP/IP などを含む豊富なネットワーク プログラミング API を提供します。
Go 言語はコンパイル速度が速く、移植性が高いため、コンテナ オーケストレーション、継続的インテグレーション、継続的デプロイメント ツールなどの DevOps ツールの開発に適しています。
Go 言語は、その簡潔な構文、強力な標準ライブラリ、効率的な同時実行モデルにより、徐々に現代のソフトウェア開発の主流言語の 1 つになりました。この記事を学ぶことで、Go 言語の基本知識を習得するだけでなく、その高度な機能とベスト プラクティスも理解し、将来の Go 言語開発のための強固な基盤を築くことができます。高性能のバックエンド サービスを構築している場合でも、複雑な分散システムを開発している場合でも、Go 言語は不可欠なパートナーになります。
プロジェクトのソース コードのダウンロード アドレス:https://download.csdn.net/download/qq_42072014/89531977