Goでカスタムパッケージを作成して使用しようとしています。それはおそらく非常に明白な何かですが、私はこれについて多くの情報を見つけることができません。基本的に、私は同じフォルダにこれら二つのファイルがあります:
mylib.go
package mylib
type SomeType struct {
}
main.go
package main
import (
"mylib"
)
func main() {
}
go run main.go
を使おうとすると、このエラーが発生します。
main.go:4:2: import "mylib": cannot find package
最初にgo build mylib.go
を実行しようとしましたが、何もしていないようです(ファイルは生成されず、エラーメッセージも表示されません)。だから私はこれを行うことができる方法のアイデアは?
まず、 "Goコードの書き方" ドキュメントを読んで理解してください。
実際の答えはあなたの "カスタムパッケージ"の性質によって異なります。
それが一般的な使用を意図しているのなら、いわゆる "Github code layout" を使うことを検討してください。基本的に、あなたはあなたのライブラリを別のgo get
-tableプロジェクトにします。
あなたのライブラリが内部使用のためであるならば、あなたはこのようになるでしょう:
実証するために:
src/
myproject/
mylib/
mylib.go
...
main.go
これで、最上位のmain.go
では、import "myproject/mylib"
を作成でき、それで問題なく動作します。
このようなフォルダ構造の場合
main.go
mylib/
mylib.go
最も簡単な方法はこれを使うことです:
import (
"./mylib"
)
GitHubでホストされているプロジェクトのために、これが人々が通常することです:
github.com/
laike9m/
myproject/
mylib/
mylib.go
...
main.go
mylib.go
package mylib
...
main.go
import "github.com/laike9m/myproject/mylib"
...
私は経験豊富なプログラマーですが、Goの世界ではまったく新しいものです。私はGoを理解するのが困難に直面していたことを私は自白しています... Goファイルをサブフォルダに整理しようとしたときにも同じ問題に直面しました。私がやった方法:
GO_Directory($ GOPATHに割り当てられたもの)
GO_Directory //the one assigned to $GOPATH
__MyProject
_____ main.go
_____ Entites
_____ Fiboo // in my case, fiboo is a database name
_________ Client.go // in my case, Client is a table name
ファイルMyProject\Entities\Fiboo\Client.go
package Fiboo
type Client struct{
ID int
name string
}
myProject\main.goファイル
package main
import(
Fiboo "./Entity/Fiboo"
)
var TableClient Fiboo.Client
func main(){
TableClient.ID = 1
TableClient.name = 'Hugo'
// do your things here
}
(私はUbuntu 16.04でGo 1.9を実行しています)
覚えておいてください、私は囲碁の初心者です。私がしていることが悪い習慣であるなら、私に知らせてください!
別の解決策:
$ GOPATHにsrc/myproject
を追加します。
それからimport "mylib"
はコンパイルします。
パッケージ辞書
type Analizador struct {
}
func main() {
}
En la claseパッケージメイン
import (
"github.com/user/lexico
)