優れたプロジェクト管理の経験とデザインをサポートするために生まれて行きます。
パッケージ
ソフトウェア工学の実践では、我々は多くの機能は、このようなスペースを終了するには、文字列の末尾を削除するよう、コードを複製発生します。特長高品質なソフトウェア製品のコードの一部は、このようなスペースを終了するには、文字列の末尾を削除する機能を記述する必要はありませんすべての時間として、再利用することができます。
私たちは、実際には、いわゆるバッグは、統一された論理ブロックに配置され、これらの多くの変数、構造、インタフェース、および機能の一部を使用することで、変数、構造体、インターフェイス、関数、などの上に述べています。そして、この名前は、パッケージ名を呼ばれ、それらに名前を付けます。
例えば、私たちのほとんどは、上記のfmtパッケージを使用して、このパッケージは、出力をフォーマットする機能の多くを提供しています、あなたは関数を書くたびに移動することなく、出力をフォーマットしない、独自のコードでは、このパッケージを参照することができます。成熟した言語は、コールする人のための完全に機能するパッケージの基礎を提供します。
パッケージを使用しての3つのメリットがあります。
- 反復関数名が存在することができるので、パッケージ内の同じ名前を持つ異なる機能、低減することができます。それ以外の場合は、あまりにも、あなたは違いを示すために接頭辞や接尾辞で、これらの機能を提供する必要があります。
- パッケージや他の組織は、あなたが見つけて再利用することができ、一緒に機能します。たとえば、あなたがのprintln()関数は、文字列のラインを出力し使用したい、あなたは簡単にそれを直接参照が付属して、パッケージFMTそれを知ることができます。
- パッケージには、コンパイルするプログラムを加速させることができる使用してください。パッケージがプリコンパイルされているので、あなたのコードを自分の時間を変更する必要があり、私はそれをコンパイルするために行くたびにパックする必要はありません。
パッケージの作成
私たちは、今行くプロジェクト管理を示す例を与えます。
まず、ディレクトリ内の我々は/Users/jemy/JemyGraw/GoLang
、以下のフォルダを作成しますpkg_demo
。次にpkg_demo
内に作成src
フォルダ
。その後でmain
内部のフォルダを作成しmain.go
たファイル。パッケージのプレゼンテーションが作成されることに加えて、我々はsrc
次のディレクトリにフォルダを作成net.duokr
し、その後でnet.duokr
内部のフォルダを作成するにはmath
、フォルダ、フォルダ名は、このフォルダのパッケージの名前は以下のファイルを行くです。その後、我々は作成しmath_pkg.go
たファイル、その名前の理由ではなく、math.go
ちょうどこの一貫性のあるファイル名とパッケージ名を説明する必要はありませんが。その後、我々は、作成したmath_pkg_test.go
テストケースのパッケージファイルとして。次のように全体的な構造は次のようになります。
。
└──SRC
├──メイン
│├──build.shを
│└──main.go
└──net.duokr
└──数学
├──math_pkg.go
└──math_pkg_test.go
私たちは、プロジェクトをコンパイルする必要があり、スクリプトを書いて、コンパイラのプロジェクトはいくつかのコマンドを必要とするため、スクリプトファイルで使用して簡単にそれを書くところBuild.shです。また、使用して、行うことができるbuild.shを可能にするchmod +x build.sh
ことのために与えられた実行権限を。Windowsは、スクリプトを構築BUILD.BAT以下の通りです。
のは、見てみましょうmath_pkg.go
定義:
パッケージ数学 FUNC(、Bの追加INTを)INT { 返す + B } FUNC減算(、BのINT)INTを{ 返す - B } FUNC乗算(、BのINT)INTを{ 返す *のBを } FUNC除算( 、BのINT)INT { 場合のb == 0 { パニック(" ゼロで除算することはできません" ) } を返す /を B }
最初は、いくつかの関数定義に続いて、パッケージ名、で、ここではそれらを見つけるでしょう函数定义首字母都是大写
、Go规定了只有首字母大写的函数才能从包导出使用,即其他调用这个包中函数的代码只能调用那些导出的函数
。
のは、見てみましょうmain.go
定義:
パッケージメイン インポート( " FMT " 数学" net.duokr /数学" ) FUNCメイン(){ VARの A = 100 のvar B = 200 fmt.Println(" デモを追加します" 、math.Add(B)) FMT。 println(" Substractデモ:" 、math.Subtract(B)) fmt.Println(" 乗算デモ:" 、math.Multiply(B)) fmt.Println(" 分割デモ:" 、math.Divide( 、B)) }
内部main.goでは、我々はカスタムパッケージの数学にimportキーワードを指し使用、引用方法は、パッケージ名の数学を維持するために戻って、メインパックの並列ファイルフォルダnet.duokrから開始することです。私たちは数学という別名からこの長いパッケージ名を与えるもの。そして、各呼び出し内部の関数演算パッケージ。
最後に、私たちは私たちのビルドスクリプトを見てみましょう。
輸出GOPATH = $ GOPATH:/ユーザー/ jemy / JemyGraw / GoLang / pkg_demo 輸出GOBIN = /ユーザ/ jemy / JemyGraw / GoLang / pkg_demo / binには net.duokr構築行く / 数学を main.go構築行く メインインストール行きます
最初の行に、我々は我々のカスタムパッケージを見つけることは少し後にコンパイルmain.go時間をプロジェクトパスGOPATHを、参加します。
2行目は、我々はこのディレクトリにプロジェクトのインストールディレクトリ、コマンドの5行目コンパイルされたファイルを設定します。
三行目、我々は我々のカスタムパッケージをコンパイル。
四行目、私たちはmain.goファイルをコンパイル。
5行目は、指定したディレクトリにコンパイルしたファイルをインストールします。
Windowsのコンパイル次のスクリプトのあるbuild.batもあります。
オフ@echo セット GOPATH = GOPATHを; C:\ JemyGraw \ GoLang \ pkg_demo 設定 GOBINは= Cを:\ JemyGraw \ GoLang \ pkg_demoの\ビンは net.duokrの\数学を構築して行く main.go構築行く メインインストール行きます
今回はフォルダ構造:
。
├──ビン
│└──メイン
├──PKG
│└──darwin_386
│└──net.duokr
│└──math.a
└──SRC
├──メイン
│├──あるbuild.bat
│├─ build.shを─
│├──メイン
│└──main.go
└──net.duokr
└──数学
├──math_pkg.go
└──math_pkg_test.go
それを実行し、出力は次のようになります。
デモを追加:300 Substractデモ: - 100 乗算のデモ:20000 分割デモ:0
まあ、パッケージの導入を使用して、我々はテストケースを作成する方法を見てみましょう。
テスト
上記の例では、我々は以下に定義され、当社のカスタムパッケージは、このパッケージでテストケースの数が含まれているファイルがあるmath_pkg_test.goことがわかりました。移動して、に置く_test.go
テストファイルとしてファイルの終わり。
書く方法をテストし、当然のことながら、プログラムのアサート結果を実行して、同じことを期待するかどうかを決定することです。
のは、数学のテストケースのパッケージを見てみましょう。
パッケージの数学の インポート( " テスト" ) TestAdd(トンFUNC * testing.T){ VARの A = 100 のvar B = 200 のvar valが= (a、b)は追加 の場合のval!= A + B { t.Error(「テストケース[ " " TestAdd " " ]失敗しました" ) } } TestSubtract FUNC(T * testing.T){ VARの A = 100 のvar = B 200 VARヴァル= 減算(a、b)は ならヴァル!= A- B { t.Error(" テストケース[ "、" TestSubtract "、" ]失敗しました" ) } } TestMultiply FUNC(T * testing.T){ VARの A = 100 のvar B = 200 VARヴァル= 乗算(a、b)は
ならヴァル!= *のB { t.Error(" テストケース[ "、" TestMultiply "、"]失敗しました!" ) } } TestDivideNormal(T FUNC * testing.T){ VARの A = 100 のvar B = 200 のvarヴァル= 除算(a、b)は ならヴァル!= A / B { t.Error(" テストケース[ " " TestDivideNormal " " ]失敗しました!" ) } }
パスは、テストファイルは、実行ディレクトリに切り替えるにはgo test
、コマンドを自動的にすべてのテストケースをテストしに行きます。
上記の例では、テストは、機能名の特性に基づいてTest
開始するだけでなく、唯一のパラメータt *testing.T
。概要
プレゼンテーションパックテストの使用例は、限り、私たちが行うのは難しい、学ぶために続けて、あなたがよく行うことができ、優れたソフトウェア製品を構築するための基礎を提供します。