[GO言語の基本] WindowsおよびLinuxへのGoのインストール、およびgo getに関する質問(2)

WindowsにGoをインストールする

あなたはできるページをダウンロードし、Windowsシステムのインストールパッケージのページでキーにダウンロードします。

初期のWindows移植作業は、Hector Chuによって行われましたが、現在のリリースはJoePoirierによって完全に維持されています。

インストールパッケージの完了後、$GOPATHこの環境変数を構成するだけで、Go言語開発の使用を開始でき、他の環境変数インストールパッケージが自動的にセットアップされます。デフォルトでは、Goはc:\go下のディレクトリにインストールされますが、インストール中にインストールディレクトリを変更する場合は、すべての環境変数の値を手動で変更する必要がある場合があります。

インストールをテストする場合は、コマンドgo run使用してhello_world1.goを実行できます

エラーが発生した場合はfatal error: can’t find import: fmt、環境変数が正しく構成されていないことを伝えてください。

Windowsでcgo(Cで記述された呼び出しコード)を使用する場合は、MinGWをインストールする必要がありTDM-GCCが一般的に推奨されます。64ビットオペレーティングシステムを使用している場合は、必ず64ビットバージョンのMinGWをインストールしてください。インストールが完了すると、環境変数およびその他の関連する構成を使用できます。

Windowsの仮想マシンで実行されているLinuxシステムにGoをインストールします

Windowsの仮想マシンのLinuxシステムにGoをインストールする場合は、仮想マシンソフトウェアVMwareを使用しVMwareプレーヤーをダウンロードし、必要なLinuxディストリビューションイメージを検索してダウンロードし、仮想マシンにインストールすることを選択できます。.Goのインストールプロセスについては、セクション2.3の内容を参照してください。

LinuxにGoをインストールする

Goのソースコードを自分でダウンロードしてコンパイルできる場合、それはあなたにとって非常に教育的です。このページに従って、インストールガイドとダウンロードアドレスを見つけることができます:Goディストリビューションをダウンロードしてください

また、インストールプロセスを完了するためにステップバイステップでご案内します。

  1. Go環境変数を設定する

    通常、Linuxのファイルシステム$HOME/.bashrcを使用してカスタム環境変数を構成します。リリースがファイル$HOME/.profileである場合は、geditまたはviを使用してファイルの内容を編集します。

    export GOROOT = $ HOME / go

    関連するファイルをファイルシステムのどこからでも確実に呼び出すことができるようにするには、以下も追加する必要があります。

    export PATH = PATH:PATH:P A T H GOROOT / am

    Goプロジェクトを開発するときは、作業ディレクトリを保存するための環境変数も必要です。

    export GOPATH = $ HOME / Applications / Go

    $GOPATH個人的な状況に応じて、複数の作業ディレクトリを含めることができます。複数の作業ディレクトリを設定した場合、go get後で(リモートパッケージインストールコマンド)を使用するとリモートパッケージが最初のディレクトリインストールされます
    バージョン1.4以降、Goコンパイラはブートストラップを実装しています。つまり、新しいバージョンのコンパイラは、バージョン1.4までコンパイルおよびインストールされます。この環境変数が設定されていない場合、このようなエラーが生成されます

    $ GOROOT_BOOTSTRAPを機能するGoツリー> = Go1.4に設定します。

    そのため、Go1.5バージョン以降をインストールするときに設定する必要があります

    cp go / home / go − bootstrap / export GOROOTBOOTSTRAP = home / go-bootstrap / export GOROOT_BOOTSTRAP =h o m e / g ob o o t s t r a p / e x p o r t G O R O O TBO O T S T R A P= HOME / .golang / go-bootstrap

    これらの設定が完了したら、ターミナルでコマンドを入力して、source .bashrcこれらの環境変数を有効にする必要があります。次に、ターミナルを再起動し、環境変数が正しく設定されていることを入力go envしてenv確認します。

  2. Cツールをインストールする

    GoツールチェーンはC言語で記述されているため、Goをインストールする前に関連するCツールをインストールする必要があります。Ubuntuを使用している場合は、ターミナルで次のコマンドを入力できます

    sudo apt-get install bison ed gawk gcc libc6-dev make

    他のディストリビューションではRPMなどのツールを使用できます。

  3. Goのソースコードを入手する

    公式ページ国内のミラーコンピュータ、その後解凍したディレクトリにソースパッケージGo]をダウンロードするにはgo、コマンドに移動する$GOROOT位置向けられています。

    wget https://storage.googleapis.com/golang/go.src.tar.gz
    tar -zxvf go.src.tar.gz
    sudo mv go $ GOROOT

  4. ビルドゴー

    ターミナルで次のコマンドを使用してコンパイルします。

    cd $ GOROOT / src
    ./all.bash

    予防

    テストnet/httpでは、パッケージへの接続を試みるテストがありgoogle.comます。以下に示すように、エラーレポートが意味をなさない場合があります。

    'make [2]:ディレクトリ `/ localusr / go / src / pkg / netを離れる'

    ファイアウォールのあるマシンを使用している場合は、不要なエラーを回避するために、コンパイルプロセス中にファイアウォールを一時的にオフにすることをお勧めします。

    この問題を解決する別の方法は、環境変数$DISABLE_NET_TESTS設定して、net/httpパッケージ関連のテストを無視するようにビルドツールに指示することです

    DISABLE_NET_TESTS = 1をエクスポートします

    パッケージをテスト実行したくない場合は./make.bash、単純なビルドプロセスを直接実行できます。

  5. テストインストール

    お気に入りのエディタを使用して次のように入力し、ファイル名として保存しますhello_world1.go

    2.1hello_world1.go

    package main
    
    func main() {
          
          
    	println("Hello", "world")
    }
    
    

    関連カテゴリを次のカテゴリに切り替えてから命令を実行すると、次のgo run hello_world1.go情報が出力されますHello, world

  6. インストールされているバージョンを確認します

    ターミナルgo versionバージョンでコマンドを入力できます。Goを使用して情報を印刷します。

    Goコードを使用して実行時にバージョンを検出する場合は、次の例を使用して検出できます。

    2.2version.go

    package main
    
    import (
    	"fmt"
    	"runtime"
    )
    
    func main() {
          
          
    	fmt.Printf("%s", runtime.Version())
    }
    
    

    このコードは、出力go1.4.2または同様の文字列になります。

  7. 更新版

    履歴ビューをページの最新の安定バージョンに公開できます。

    Go1シリーズの最新の安定バージョンが2012年3月28日にリリースされました。

    Goソースコードには次の3つのブランチがあります。

    • Goリリース:最新の安定バージョン、実際の開発に最適
    • 毎週移動:最新の更新バージョンが含まれ、通常は週に1回更新されます
    • ヒント:クローズドベータ版と同等の最新バージョンを常に保持する

    別のバージョンを使用している場合は、公式ブログに公開されている情報に注意してください。表示しているドキュメントが、使用しているバージョンと一致しない場合があります。

インストールディレクトリリスト

Goインストールディレクトリ($GOROOTフォルダ構造は次のようになります。

README.md、作成者、寄稿者、ライセンス

  • /bin:コンパイラ、Goツールなどの実行可能ファイルが含まれています
  • /doc:サンプルプログラム、コードツール、ローカルドキュメントなどが含まれています。
  • /lib:ドキュメントテンプレートが含まれています
  • /misc:Goエディターのサポートに関連する構成ファイルとcgoの例が含まれています
  • /os_arch:標準ライブラリを含むパッケージのオブジェクトファイル(.a
  • /src:ソースコードビルドスクリプトと標準ライブラリを含むパッケージの完全なソースコード(Goはオープンソース言語です)
  • /src/cmd:GoおよびC用のコンパイラとコマンドラインスクリプトが含まれています

ランタイムに移動(ランタイム)

Goコンパイラはネイティブの実行可能コードを生成しますが、これらのコードは引き続きGoランタイムで実行されます(コードのこの部分はランタイムパッケージにあります)。このランタイムは、Javaおよび.NET言語で使用される仮想マシンに似ており、メモリ割り当て、ガベージコレクション(セクション10.8)、スタック処理、ゴルーチン、チャネル、スライス、マップ、リフレクションなどの管理を担当します。

ランタイムは主にC言語で記述され(Go 1.5が起動を開始します)、各Goパッケージの最上位パッケージです。カタログには$GOROOT/src/runtime、関連するコンテンツがあります。

ガベージコレクターGoには、シンプルで効率的なマークスイープコレクターがあります。その主なアイデアは、IBMの再利用可能なガベージコレクターから来ています。これは、効率的で低レイテンシの同時コレクターを作成することを目的としています。現在、gccgoのコレクターはなく、gcとgccgoの両方の新しいコレクターが開発中です。ガベージコレクション機能でプログラミング言語を使用しても、メモリ割り当てによって引き起こされる問題を回避できるわけではありません。コンテンツの割り当てと再利用は、どちらもCPUリソースを消費する動作です。

Go実行可能ファイルは、対応するソースコードファイルよりもはるかに大きく、Goランタイムがすべての実行可能ファイルに埋め込まれていることを示しています。もちろん、多数のクラスターにデプロイする場合、ファイルサイズが大きくなることも頭痛の種です。しかし、一般的に、GoのデプロイはJavaやPythonよりもはるかに簡単です。Goは他のファイルに依存する必要がないため、必要な静的ファイルは1つだけです。したがって、他の言語のように、依存ファイルの異なるバージョン間で混乱することはありません。


通訳に行く

Goには動的言語のようにすばやくコンパイルできる機能があるため、当然、誰かがGo言語をREPL(read-eval-print loop)プログラミング環境に実装できるかどうかを尋ねます。Sebastien Binetは、この環境を使用してGoインタープリターを実装しましたこのページで見つけることができます:https//github.com/sbinet/igo

ゴーゲットについて

国内でgogetを使用すると、golang.orgなどの一部のWebサイトの依存関係パッケージをダウンロードできない場合があります。例えば:

$ go get collidermain
package golang.org/x/net/websocket: unrecognized import path "golang.org/x/net/websocket" (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

これは、いくつかのネットワーク上の理由により、条件が許せばVPNを使用でき、次の方法も解決できます。

1:Gopm(Goパッケージマネージャー)

Go Package Manager(gopm)は、Goのパッケージマネージャーおよびビルドツールです。

git地址:https://github.com/gpmgo/gopm
官方地址:https://gopm.io/gopm
文档路径:https://github.com/gpmgo/docs/tree/master/zh-CN

このコマンドを使用して、gopmプラグインをインストールできます。デフォルトはGOBINに保存されます。%GOBIN%環境変数が構成されていない場合、デフォルトで%GOPATH%の下のbinディレクトリにインストールされます。 GOBINを%PATH%underに追加します。

go get -u github.com/gpmgo/gopm

gopm get xxxを使用すると、指定したパッケージをgopmのローカルウェアハウスにダウンロードできます〜/ .gopm / repos(推奨) 'gopm get -g xxx'を使用すると、指定したパッケージをGOPATHにダウンロードできます。(推奨)「gopmget -l xxx」を使用して、指定したパッケージを現在のディレクトリにダウンロードできます(一般的には使用されません)。


-gパラメータなしでgogetの代わりにgopmget -gを使用し、.vendorディレクトリの下にある依存パッケージ
をダウンロードします。-gパラメータを使用して依存パッケージをGOPATHディレクトリにダウンロードします。


2:フォームgithubをインストールします

golangはgithubにミラーライブラリを確立しました。たとえば、https://github.com/golang/netはhttps://golang.org/x/netのミラーライブラリです。

実際、golang.org / x / netパッケージを入手するには、次の手順のみが必要です。

$ mkdir -p $GOPATH/src/golang.org/x  //路径下创建此文件
$ cd $GOPATH/src/golang.org/x      //切换到此目录
$ git clone https://github.com/golang/tools.git  //通过git安装 tools
$ git clone https://github.com/golang/lint.git   //安装 lint 
$ go get golang.org/x/lint/golint       //然后执行

golang.org/xにある他のパッケージは、このメソッドを使用できます。

たとえば、多くの囲碁ソフトウェアは、コンパイル時にツールのコンテンツを使用し、次の方法を使用して取得します。

上記のxディレクトリを入力し、次のように入力します。

git clone https://github.com/golang/tools.git

go getで取得したディレクトリ構造と一致している必要があることに注意してください。一致していないと、ライブラリが見つかりません。

3:GOPROXY

主に2つのアドレスがあります:

https://goproxy.io
https://athens.azurefd.net

命令行设置 例如 
goproxy

// bash mac
export GOPROXY=https://goproxy.io

// powershell windows
$env:GOPROXY = "https://goproxy.io"

go moudle

set GO111MODULE=on    //windows
export GO111MODULE=on //linux

4. gogetでインストールされたパッケージを削除します

  1. 手動で削除
It's safe to just delete the source directory and compiled package file. Find the source directory under $GOPATH/src and the package file under $GOPATH/pkg/<architecture>, for example: $GOPATH/pkg/windows_amd64.

ソースファイルディレクトリとコンパイル済みパッケージディレクトリを削除するだけです。ソースディレクトリGOPATH / srcで削除するパッケージの名前を見つけて直接削除します。次に、GOPATH / srcで削除するパッケージの名前を見つけて直接削除します。G O P A T H / S LT R&がC探しあなたする削除添加P A C K A G Eの名前を直接に接続され、削除の他次いで後に削除対象のファイル・パッケージ・ディレクトリコンパイルGOPATH / PKG /下。

  1. go cleanコマンドを使用して、コンパイルされたパッケージディレクトリを自動的に削除してから、ソースファイルディレクトリを手動で削除します。
go get -u github.com/motemen/gore

# -n 表示只打印命令,不执行
go clean -i -n github.com/motemen/gore...

# 执行删除编译后的package目录
go clean -i github.com/motemen/gore...

# 如果还有未删除的目录,那只有手动删除了
$ rmdir $GOPATH/pkg/darwin_amd64/github.com/motemen/gore
$ rm -rf $GOPATH/src/github.com/motemen/gore

注意:
请一定要包含三个点号 ... ,这样就不会递归删除子package,如本例中的 gore/gocode。-i 参数表示删除由 go install 所创建的archive或二进制文档。

おすすめ

転載: blog.csdn.net/weixin_54707168/article/details/113933926