目次
1. パッケージとソースファイルの概念
2. main パッケージ
ホームページ バックエンド開発 Golang Go 言語にはどのようなパッケージが必要ですか?

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

Jan 04, 2023 pm 08:30 PM
golang 言語を移動

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Apr 02, 2025 pm 04:54 PM

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Apr 02, 2025 pm 05:09 PM

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

GO言語の「VAR」と「タイプ」キーワード定義構造の違いは何ですか? GO言語の「VAR」と「タイプ」キーワード定義構造の違いは何ですか? Apr 02, 2025 pm 12:57 PM

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? Apr 02, 2025 pm 03:51 PM

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...

See all articles