Go 言語はオープンソースのプログラミング言語であり、その出現により、静的型チェック、ガベージ コレクション、コルーチンなど、多くの利点が得られます。 Go 言語で開発する場合、さまざまなパッケージの関数と変数を使用することが一般的な要件です。この記事では、Go 言語でさまざまなパッケージを呼び出すためのいくつかの方法とテクニックを紹介します。
Go 言語では、import
ステートメントを使用して必要なパッケージをインポートする必要があります。たとえば、fmt
パッケージの関数を使用したい場合は、コード内で fmt
パッケージをインポートできます。
import "fmt"
複数のパッケージを同時にインポートするには、次の方法を使用できます:
import ( "fmt" "time" )
インポートされたパッケージ名は一意である必要があることに注意してください。パッケージ内の関数と変数を使用する場合、それらにアクセスするにはパッケージ名のプレフィックスを使用する必要があります。
Go 言語では、変数、関数、定数などの可視性は、最初の文字の大文字と小文字によって制御されます。定義する変数の最初の文字が大文字の場合、その変数は外部パッケージからアクセスできますが、それ以外の場合は外部パッケージからアクセスできません。たとえば、次の関数を定義します。
func GetUserId() string { // TODO }
関数名 GetUserId
の最初の文字が大文字であるため、この関数は他のパッケージからアクセスできます。
パッケージをインポートすると、パッケージ内で公開されている関数と変数のみにアクセスできます。たとえば、プライベート変数 count
を持つ mylib
というパッケージがあるとします。
package mylib var count int = 0
他のパッケージ ## に mylib# をインポートするとします。
count 変数はプライベート変数であるため、パッケージはこの変数にアクセスできません。
fmt パッケージに
f という名前を付け、後で
fmt.Println の代わりに
f.Println を使用することができます。
パッケージのエイリアスを作成することで、コードを簡素化し、読みやすさを向上させることができます。
コマンドを通じて他のパッケージをダウンロードしてインストールできます。たとえば、github.com/gin-gonic/gin
パッケージをインストールする場合は、次のコマンドを実行できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>import f "fmt"
func main() {
f.Println("Hello, world!")
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
インストールが完了したら、 # をインポートできます。プログラム内の ##gin
go get github.com/gin-gonic/gin
クロスパッケージ呼び出しmain パッケージがあり、それぞれ次の関数を定義しているとします。
main パッケージ内の
import "github.com/gin-gonic/gin" func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello, world!") }) router.Run(":8080") }
// mylib包 package mylib func Add(a, b int) int { return a + b }
mylib.Add メソッドを使用して、
mylib パッケージ内の
Add 関数を呼び出します。
インターフェイス呼び出し
// main包 package main import "mylib" func main() { sum := mylib.Add(1, 2) println(sum) }
Logger
インターフェイスを実装したい場合は、Log メソッドを実装する必要があります。たとえば、
FileLogger という名前の構造があります。
type Logger interface { Log(msg string) }
FileLogger この構造は、Logger インターフェイス
に Log を実装します。メソッドを実装するため、
Logger インターフェイスを実装することを検討できます。
別のパッケージで、
Logger
WriteLog を定義できます。
WriteLog 関数を呼び出すには、次のメソッドを使用します。
type FileLogger struct { file *os.File } func (l *FileLogger) Log(msg string) { l.file.WriteString(msg) }
型アサーション
func WriteLog(l Logger, msg string) { l.Log(msg) }
JsonResponse と
TextResponse
fileLogger := &FileLogger{ file: os.Create("log.txt"), } WriteLog(fileLogger, "hello, world!")
関数 SendResponse
を定義できます。この関数は、HttpResponse
インターフェイスを実装するオブジェクトを受け取ります。
type HttpResponse interface { GetStatus() int GetBody() []byte }
次の方法で SendResponse
関数を呼び出すことができます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:go;toolbar:false;'>type JsonResponse struct {
status int
body []byte
}
func (r *JsonResponse) GetStatus() int {
return r.status
}
func (r *JsonResponse) GetBody() []byte {
return r.body
}
type TextResponse struct {
status int
body []byte
}
func (r *TextResponse) GetStatus() int {
return r.status
}
func (r *TextResponse) GetBody() []byte {
return r.body
}</pre><div class="contentsignin">ログイン後にコピー</div></div>SendResponse<p> 関数内で、型アサーション <code>resp を使用します。 .(*JsonResponse)
を使用して、
オブジェクトの特定のタイプを決定します。 resp
オブジェクトの型が JsonResponse
の場合、戻り値 ok
の値は true
であり、変換された resp# は ##オブジェクトは
json 変数に割り当てられます。それ以外の場合、戻り値
ok の値は
false になります。
上記は、Go 言語でさまざまなパッケージを呼び出すためのいくつかの方法とテクニックです。実際の開発では、これらの手法やテクニックを駆使することで、プログラミングの効率が向上し、コードエラーの確率を減らすことができます。
以上がGolang のさまざまなパッケージ呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。