Go で、あるパッケージで定義された型を別のパッケージで使用するにはどうすればよいですか?

DDD
リリース: 2024-11-22 05:09:21
オリジナル
966 人が閲覧しました

How to Use a Type Defined in One Package in Another Package in Go?

Go でのパッケージと型のインポート

Go では、パッケージは関連するコードとデータをカプセル化します。あるパッケージの機能を別のパッケージで再利用するには、最初のパッケージを後者のパッケージにインポートする必要があります。

問題: あるパッケージから別のパッケージに型をインポートする

次のプロジェクト構造を考慮してください:

src
|-->config
       |--> config.go
|-->otherPackage
       |--> otherFile.go
|-->main.go
ログイン後にコピー

ファイル config.go には、Config のタイプ定義が含まれています:

package config

type Config struct {
    // ...
}
ログイン後にコピー

使用したいファイル otherFile.go:

package otherPackage

func SomeFunction(target float64, entries [2]float64, config config.Config) {
    // ...
}
ログイン後にコピー

インポート エラー: "インポートされ、使用されていません" および "未定義: Config"

構成パッケージをインポートしようとすると、次のエラーが発生します。次のエラー:

  • "はインポートされましたが、インポートされていませんused"
  • "unknown: Config"

最初のエラーは、構成パッケージをインポートしたが、それがコード内のどこにも使用されていないことを示します。 2 番目のエラーは、構成タイプが現在のスコープで認識されないことを示しています。

解決策: インポートされたタイプに修飾名を使用する

この問題を解決するには、完全なパッケージを使用してパッケージをインポートする必要があります。相対パスではなくパスを使用します。さらに、コード内で Config タイプを参照する場合は、そのパッケージ名で Config タイプを修飾する必要があります。

package otherPackage

import (
    "fmt"
    "math"
    "your-project/src/config"
)

func SomeFunction(target float64, entries [2]float64, config config.Config) {
    // ...
}
ログイン後にコピー

フルパスでパッケージをインポートすることにより、Config タイプを見つける場所を明示的に指定します。パッケージ名で型を修飾すると、コンパイラはどの Config 型を参照しているのかを確実に認識できるようになります。

注: インポートしているパッケージ名が変数または型と同じである場合は、現在のスコープの場合、競合を避けるために変数または型の名前を変更する必要があります。

以上がGo で、あるパッケージで定義された型を別のパッケージで使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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