[解決済み] mod initは新しいフォルダを作成しますか? パスの意味は?
質問
Go言語の経験は3日だけです。私の混乱を理解するために、例題がより適切であることを願っています。
root@freebsd1:/usr/home/arun/go-start/src/test2 # go mod init f1/f2/f3/f4/f5/hello
go: creating new go.mod: module f1/f2/f3/f4/f5/hello
root@freebsd1:/usr/home/arun/go-start/src/test2 #
上記の例では
go mod init
は、これらのフォルダをすべて作成しています(
f1/f2/f3/f4/f5/hello
)?. いろいろ検索してみましたが、そのようなフォルダはシステム内に見つかりませんでした。
では、このパスの意味は何なのでしょうか。
このパスがそのままだと下のコマンドは実行されないにもかかわらず
# go install f1/f2/f3/f4/f5/hello
--:EDIT:--
これは、後で誰かの役に立つかもしれません(特に初心者のために、適切な方法でこれを理解するためのステップを歩んでください)。
-
電卓というプログラムを作って、あとでGitHubにアップロードする予定です。
-
のような別のパッケージに関数を入れておくことにします。
sum
,multiply
その他 -
ファーストステップ
#go mod init github.com/go-arun/calculator
( 混同しないでください。これは、将来的にこのプロジェクトのためにgithubにリポジトリを作成するかもしれないという仮定に過ぎません ) -
作成したフォルダ
sum
(パッケージフォルダの1つ、および作成されたsum.go
内部 )
システムで入っているものを見る。
1.
root@debian1:/home/arun/lab# go mod init github.com/go-arun/calculator
go: creating new go.mod: module github.com/go-arun/calculator
root@debian1:/home/arun/lab# cat go.mod
module github.com/go-arun/calculator
go 1.15
2.
root@debian1:/home/arun/lab# cat sum/sum.go
package sum
import "fmt"
func Sum(num1,num2 int)(){
fmt.Println(num1+num2)
}
3.
root@debian1:/home/arun/lab# cat main.go
package main
import(
"github.com/go-arun/calculator/sum"
)
func main(){
n1 := 10
n2 := 10
sum.Sum(n1,n2)
}
4.
root@debian1:/home/arun/lab# tree
.
|-- go.mod
|-- main.go
`-- sum
`-- sum.go
解決方法は?
go mod init
を実行しても、これらのフォルダは作成されません。モジュールパス" を
go mod init
に記録されます。
go.mod
ファイルを作成します。
モジュールパスとは、モジュールルートに対応するインポートパスのプレフィックスです。モジュールパスとモジュールルートへの相対パスは、アプリ内で一意でなければならない完全なインポートパスを形成します。
ですから、例えば、あなたのモジュールに
foo
(そして、パッケージ
foo
であるパスでインポートされます。
modulepath/foo
. あなたの場合は、次のようになります。
f1/f2/f3/f4/f5/hello/foo
.
に対して許可されています。
moduleA
を含むことができます。
foo
パッケージ、また
moduleB
を持つようにする。
foo
パッケージを使用します。使用するときやインポートするときは、最初に
moduleA/foo
後者は
moduleB/foo
というように、どちらをインポートしているのかが曖昧にならないようにするためです。モジュールパスは名前空間のようなものです。
モジュールを公開する予定の、または予定しているリポジトリに対応するモジュールパスを使用することが推奨されているので、その際は。
go get
は自動的にあなたのモジュールを取得し、ビルドし、インストールすることができます。たとえば、次のようなモジュールパスを選択します。
github.com/bob/hello
そうすれば、あなたのモジュールを公開したとき、誰もが単に
import "github.com/bob/hello"
をアプリに組み込むことができます。
また、ビルドする前にコードをリモートリポジトリに公開する必要はないことに注意してください。しかし、それでもこのパターンに従うことをお勧めします。そうすれば、将来公開することになったときに、コードを動作させるための作業を少なくすることができます。ここで失うものは何もありません。
詳しくはドキュメントをご覧ください。 コマンドゴー モジュールの定義
関連
-
golang インストールプロンプト:ダイヤル tcp 216.58.200.241:443: connectex: 接続の試行に失敗しました。
-
[解決済み] Goにforeachループはあるのか?
-
[解決済み] Goのオプションのパラメータ?
-
[解決済み] デュレーションと整数を掛け合わせる方法は?
-
[解決済み] GOPATHとGOROOTの値はどうすればよいですか?
-
[解決済み] 2枚のスライスの等価性を確認する
-
[解決済み】Goのタグはどのような用途に使われますか?
-
[解決済み】C言語の三項演算子に相当するGoの慣用句は何ですか?
-
[解決済み】init()関数はいつ実行されるのですか?
-
[解決済み】GoはREPLを提供しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Cgo: すみません、未実装です: 64ビットモードはコンパイルされていません。
-
Windowsのプロパティダイアログボックスのエンコーディングの問題 ファイル名、ディレクトリ名、ボリュームラベルの構文が正しくありません。
-
[解決済み] キューの実装はありますか?
-
[解決済み] GOBINが設定されていない:go installを実行できない
-
[解決済み] goでローカルパッケージをインポートするには?
-
[解決済み] go get を使って特定のバージョンのパッケージをインポートするにはどうすればよいですか?
-
[解決済み] デュレーションと整数を掛け合わせる方法は?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】Goで設定を処理する方法【終了しました
-
[解決済み】Goはサードパーティ・パッケージをどのようにアップデートしますか?