1. 程式人生 > >GO語言 環境搭建與git指令的使用

GO語言 環境搭建與git指令的使用

#Go語言中文網:https://studygolang.com/

Go語言簡介:

    說起爬蟲,都會想到Python中的urllib2、Scrapy、selenium等包。但當涉及到大量的網址需要爬取時,對單臺機器的爬蟲速度要求很高。Python中的多執行緒或者高併發爬蟲實現起來較為麻煩,這時候原生併發的Go語言就能派上很大的用場。Go語言本身支援併發程式設計,相比起Python等解釋型語言,它的編譯速度很快,跟C++媲美。它也帶有net/http包,支援爬蟲功能,自帶有database/sql包,支援資料庫連線。

    而Go在爬蟲中,最突出的優點就是其方便的並行性,這讓爬蟲能夠高效地工作,減輕工程難度。

Go語言Ubuntu下安裝:

平常來說以下命令可以安裝Go:

[email protected]:~$ apt-get install golang

但是後來在實際應用中,發現這樣安裝下來的Go有諸多bug,還是去官網把go的tar包下載下來,再解壓

下載地址:https://www.golangtc.com/download  選擇版本:go1.9.2.linux-amd64.tar.gz

下載解壓後移動資料夾到自己喜歡的資料夾下,然後配置 /etc/profile 配置自己的GOPATH和GOROOT

輸入 go version,有顯示則配置成功

git指令的使用

在實際進行Go語言程式的編寫時,借鑑別人程式碼的時候,會發現別人的程式碼中有許多github或者golang的包,例如first.go程式中包含下列import

import("database/sql"

            _"github.com/jackx/pgx/stdlib"

)

(golang.com是被牆的,之後的文件會說明如何import網路不可連的包)

這時如果我們只安裝了go語言,在go run first.go時則會報錯:

go: missing Git command. See http://golang.org/s/gogetcmd

這個的解決方法,只需要 apt-get install git

然後我們再來run一下這個程式,又會報錯,應該是無法在本地找到這個包。這是因為在這裡必須要將github上面的包先下載下來,再來import

下載的命令為:

go get github.com/lib/pq

但是首先,我們要確保我們的主機可以和github的伺服器連線上,如果直接執行上面的命令,會提示:

Permission denied (publickey).

這是因為主機的公鑰沒有提交給github.com,解決方法為:

1. 配置conf檔案

[email protected]:~$ vim ~/.ssh/config

新增:

    Host github.com

    HostName github.com

    Port 22

    IdentityFile ~/.ssh/id_rsa.pub

2.在github.com上登陸 

3. 點開頭像旁邊的箭頭,點入setting

4. 點選SSH and GPG keys 

5. 在SSH keys旁邊點選 New SSH key

6. 命令列輸入 vim ~/.ssh/id_rsa.pub (如果沒有公鑰,則輸入ssh-keygen -t rsa 生成公鑰,如果沒有ssh包,則apt-get install openssh-server), 將檔案中的字元全部copy 

7. 將copy的公鑰貼上到github.com的SSH key設定中,點選Add。

8. 命令列輸入

[email protected]:~$ eval "$(ssh-agent -s)"

[email protected]:~$ ssh-add

9. 嘗試 ssh -T [email protected],如果配置正確,會出現

    Hi Username!You've successfully authenticated, but GitHub does not provide shell access.

10. 然後使用go get github.com/lib/pq, 如果報錯類似:

   Username for 'https://github.com': terminal prompts disabled

    那麼使用命令

    env GIT_TERMINAL_PROMPT=1 go get github.com/lib/pq

    然後就可以在Go檔案中import github.com的包了。