2016-05-30 13 views
-2

Golangのパッケージの周りを頭で囲みました。サブパッケージ機能が正しくインポートされていません。

これは私がSomefuncので、その印象の下にあった私のワークスペース

/bin 
/pkg 
/src 
    /github.com 
    /esbenp 
     /testrepo 
     /subpackage 
      somefuncs.go 
     main.go 

main.go

package main 

import "github.com/esbenp/testrepo/subpackage" 

func main() { 
    Somefunc() 
} 

somefuncs.go

package subpackage 

import "fmt" 

func Somefunc() { 
    fmt.Printf("yo") 
} 

です大文字で始まり、それをインポートした他のファイルで使用するためにエクスポートされます。私がコンソールに出す出力はです。

main.go:4: imported and not used: "github.com/esbenp/testrepo/subpackage" 
main.go:8: undefined: Somefunc 

誰かが正しい方向に向いていますか?

+0

はないにも精神的に、「サブパッケージ」と呼んではいけません。 「サブ」パッケージという本物の概念はありません。パッケージはどこかに存在しなければならず、これらのディレクトリはファイルシステムに入れ子になっています。しかし、このファイルシステムネストは、パッケージの使用方法、インポート方法、アクセス方法に意味を持ちません。 (Nitpick:goツールは、vendor、internal、testdataのようなファイルシステムフォルダを扱い、サブパッケージという概念を持っています)。 – Volker

答えて

5

を行う必要があり、あなたのmain.goでSomefuncに対処するために

はに属しています。

あなたが同じ名前を持つ複数のサブパッケージを持っている場合は、あなたがそれらをインポートしながら、それらをエイリアスする必要がある、または競合が存在します。

import (
    xapi "x/xx/xxx/api" 
    yapi "y/yy/yyy/api" 
) 
2

パッケージをインポートすると、そのパッケージ名が使用可能になります。 subpackage.Somefunc():あなたは、パッケージの名前で機能を接頭辞に持つ

subpackage.Somefunc()

関連する問題