Go 言語にはどのようなパッケージが必要ですか?

青灯夜游
リリース: 2023-01-04 20:30:17
オリジナル
4188 人が閲覧しました

Go 言語にはメイン パッケージが必要です。 Go 言語はコンパイルされた静的言語であるため、Go 言語プログラムを実行する前に、バイナリ実行可能ファイルにコンパイルする必要があります。Go 言語実行可能プログラムを生成するには、main という名前のパッケージが必要であり、このパッケージには main という名前のパッケージが必要です。そしてメイン関数は 1 つだけです。

Go 言語にはどのようなパッケージが必要ですか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

1. パッケージとソースファイルの概念

Go プログラムは、パッケージをリンクすることで構成されます。パッケージは、パッケージに属する定数、型、変数、および関数を定義するソース ファイルで構成されます (これらのファイルには、同じパッケージ内のすべてのファイルからアクセスでき、エクスポートを通じて他のパッケージからも使用できます)。各パッケージのコードは小さな再利用単位として使用でき、他のプロジェクトから参照できます。

各ソース ファイルには、どのパッケージに属するかを定義する package ステートメントがあり、その後に、どのパッケージを使用する必要があるかを宣言する空のインポート コレクションが続き、その後に空の関数、型、変数が続きます。定数のコレクション。

code と errno という名前のファイルの所属パッケージが両方とも errno であることがわかります。これは、Go では Java とは異なり、クラスが再利用の単位として使用されず、パッケージが再利用の単位として使用されることがわかります。ユニット: 非常に小さな多重化ユニット。

要約: Go の最小単位はパッケージであり、そのパッケージの下に複数のソース ファイルを置くことができます。ソース ファイルはクラスに相当します。各ソース ファイルはパッケージを通じてファイルを宣言します。ステートメント。それがどのパッケージに属しているか。

2. main パッケージ

Go 言語では、main という名前のパッケージには特別な意味があります。 Go 言語コンパイラは、この名前のパッケージをバイナリ実行可能ファイルにコンパイルしようとします。 Go でコンパイルされたすべての実行可能プログラムには、main という名前のパッケージが必要です。

#簡単に言うと、Go 言語の実行可能プログラムを生成するには、main という名前のパッケージが必要であり、このパッケージの下には main 関数が 1 つだけ存在する必要があります。

コンパイラは、パッケージの名前が main であることを検出すると、 main() という名前の関数も検出します。そうでない場合、実行可能ファイルは作成されません。 main() 関数はプログラムのエントリ ポイントであるため、この関数がなければプログラムは実行を開始できません。プログラムがコンパイルされるとき、メイン パッケージを宣言するコードが配置されているディレクトリのディレクトリ名が、バイナリ実行可能ファイルのファイル名として使用されます。

3. パッケージディレクトリの命名仕様

ルールのないルールはないと言われますが、Go 言語を開発する前にいくつかの特徴と特徴を理解する必要があります。高品質で普遍的なコードを開発するのが得意な場合は、Go 言語の仕様を理解する必要がありますが、そうでない場合は、自分だけが理解できるプログラムを開発するのは単なる娯楽です。このセクションでは、いくつかの古典的なコードと企業の開発習慣に基づいた命名規則の例を示します。例は次のとおりです:

この例の図に基づいて、私が理解している開発仕様を説明します:

  • conf: このディレクトリには主に設定ファイルが保存されます。

  • #handler: 主に一部のプログラムのエントリ ファイルが保存されます。Java の Colter 層に相当します
  • model: 主にデータベース操作に関連するファイルに保存されます
  • pkg: 主に一般的なツール クラスとその他のコードを保存します
  • router: 主にルーティング サービスのコードを保存します
  • service: 主にビジネス コードを保存します
  • vendor: 主に依存関係を保存しますプロジェクト自体のパッケージ
  • conf.yaml: プロジェクト構成ファイルは、次のディレクトリまたは conf フォルダー
  • main に配置できます。 .go: プログラムのエントリ ポイント、通常はルート ディレクトリに配置されます
4. Import

導入原理パッケージ

プログラム 初期化と実行はメイン パッケージから始まります。メイン パッケージが他のパッケージもインポートする場合、それらはコンパイル中に順番にインポートされます。複数の場所からインポートされたパッケージは 1 回だけインポートされます。パッケージがインポートされるときに、そのパッケージが他のパッケージもインポートする場合は、他のパッケージが最初にインポートされ、次にこれらのパッケージ内のパッケージレベルの定数と変数が初期化され、次に init 関数 (存在する場合) が実行されます。 。 )、等々。インポートされたすべてのパッケージがロードされた後、メイン パッケージ内のパッケージ レベルの定数と変数が初期化され、次にメイン パッケージ内の init 関数が実行され (存在する場合)、最後に main 関数が実行されます。

パッケージがインポートされると、大まかに次の優先順位に従って依存関係が高から低の順に検索されます。


現在のパッケージの下のベンダー ディレクトリ。
  • src の下にベンダー ディレクトリが見つかるまで、上のディレクトリを検索します。
  • GOPATH で依存パッケージを探します。
  • GOROOT ディレクトリを確認します
パッケージ インポートの構文

インポート コマンドは、Go コードを記述するときによく使用されます。表示されるメソッドは次のとおりです:

    General import
  • import(
        "fmt"
    )
    ログイン後にコピー
  • その後、コード内で次の方法で呼び出すことができます
fmt.Println("hello world")
ログイン後にコピー

上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块。

  • 点操作

import (
   . "fmt"
)
ログイン後にコピー

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”)  可以省略的写成Println(“hello world”)。注意:该包内的函数不能与其重名。

  • 别名操作

import( f “fmt” )
ログイン後にコピー

别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字,别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”),通常为了解决导入多个重名包的问题。

  • _操作

import (
    _ "github.com/go-sql-driver/mysql"
)
ログイン後にコピー

_操作其实只是引入该包但不使用,通常只为了执行该包中所有的init()函数,最常见的就是上面的mysql包。

【相关推荐:Go视频教程编程教学

以上がGo 言語にはどのようなパッケージが必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート