ホームページ  >  記事  >  バックエンド開発  >  GO の学習 : - パッケージ

GO の学習 : - パッケージ

Susan Sarandon
Susan Sarandonオリジナル
2024-11-20 20:04:16473ブラウズ

やあ!私は現在 Go Lang を学習しており、自分の Notion に関する基本的なメモをいくつか取っており、それをここで公開したいと思っています。よく考えられて書かれているわけではありませんが、参考のために時々メモしているだけです。

私はMaximilian SchwarzmüllerによるUdemyコースを受講しています。


注意事項

  • コードを複数のファイルに分割し、それらのファイルを複数のパッケージに分割できます
  • そうすれば、それらのパッケージをプロジェクトで使用できるようになります
  • これは、コードをより適切に処理するためにコードを複数のファイルに分割してコンポーネントを作成するのと似ているようです。そうすることで、独自のパッケージも作成できます

パッケージの作成

  • 新しい .go ファイルを作成するだけです
  • すべての go ファイルはパッケージの一部である必要があります
  • 同じパッケージ内のファイルを他のファイルと宣言すると、同じパッケージ内の任意のファイル内の関数を直接使用することができます
  • 例: 関数を含むファイルを作成し、別のファイルでその関数を呼び出すには、両方のファイルを同じパッケージに含めて、関数を直接呼び出すことができます
  • インポートはパッケージを介して直接渡されません
  • そのため、新しい go ファイルの関数で使用されている他のパッケージをインポートする必要があります
  • 複数のファイルを 1 つのパッケージに作成すると、そのパッケージを別のプロジェクトで使用できます。こうすることで、何度も使用するコードを含むパッケージを作成でき、そのコードをパッケージに入れて、そのパッケージを同じ目的で別のプロジェクトで使用されています

カスタムパッケージ

  • カスタム パッケージを作成するには、そのパッケージ用に新しいフォルダーを作成する必要があります
  • フォルダー名はパッケージと同じである必要があります
  • ファイル名は異なっていてもよく、パッケージと同じである必要はありません
package fileops

import (
    "errors"
    "fmt"
    "os"
    "strconv"
)

func writeFloatToFile(value float64, fileName string) {
    valueText := fmt.Sprint(value)
    os.WriteFile(fileName, []byte(valueText), 0644)
}

Learning GO : - Packages

  • ここには fileops という名前のパッケージがあり、そのフォルダー名は fileops で、ファイルが含まれています
  • そのファイルには任意の名前を付けることができます。ファイルの上に、ファイルが含まれるパッケージ名を宣言します

パッケージの使用

  • このカスタム パッケージを使用するには、インポートする必要があります。プロセスは他の組み込みパッケージと同じです
  • ただし、この場合は go.mod ファイルと同じパスを指定する必要があります
package main

import (
    "fmt"
    "example.com/bank/fileops"
)
  • ここで、example.com/bank はプロジェクトの作成時に作成された go.mod ファイルからのものです

Learning GO : - Packages

識別子のエクスポート - 変数、関数など…

  • 別のパッケージの関数を使用していて、そのパッケージを作成している場合は、それらの関数をエクスポートする必要があります
  • 名前が大文字で始まるように定義されたパッケージから何かをエクスポートするには
package fileops

import (
    "errors"
    "fmt"
    "os"
    "strconv"
)

func writeFloatToFile(value float64, fileName string) {
    valueText := fmt.Sprint(value)
    os.WriteFile(fileName, []byte(valueText), 0644)
}
  • これは、JavaScript のエクスポート キーワードと同じように機能します。エクスポート キーワードを使用して関数または変数を定義し、その変数または関数をエクスポートする必要があり、他のファイルで使用できることを明示的に定義します
  • つまり、関数または変数の名前によって、何かがエクスポートされるかどうかを定義できます。
package main

import (
    "fmt"
    "example.com/bank/fileops"
)
  • Go には独自のパッケージ ディレクトリがあり、そこから使用できるパッケージを入手できます。場合によっては、最初から作成したくない機能がいくつかあるため、GO で利用できる「外部パッケージ」を使用できます。 .
  • これは NPM パッケージと同様の概念です

外部パッケージの使用

  • パッケージをシステム上にグローバルに追加する Go コマンドがあります。
func WriteFloatToFile(value float64, fileName string) {}
func GetFLoatFromFile(fileName string) (float64, error) {}
  • このコマンドを実行すると、go.mod ファイルが変更され、パッケージがそこにリストされ、すべてのサードパーティの依存関係がそこにリストされます。
package main

import (
    "fmt"

    "example.com/bank/fileops"
)
fileops.WriteFloatToFile(accountBalance, accountBalanceFile)  
  • パッケージを使用するには、それを使用する go ファイル内でインポート パスを定義できます。インポート パスは、go.mod ファイルに保存されている github リンクと同じです。
go get github.com/Pallinder/go-randomdata
  • その後の使用プロセスは同じで、ランダムデータを使用します。公式サイトからすべてのメソッドを取得し、パッケージのページを参照して、使用できるすべてのメソッドを確認します。
module example.com/bank

go 1.22.1

require github.com/Pallinder/go-randomdata v1.2.0 // indirect

以上がGO の学習 : - パッケージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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