這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
一、環境準備
1、編譯器,intellij idea。
下載地址:https://d1opms6zj7jotq.cloudfront.net/idea/ideaIC-2016.1.2b.exe
下載完,直接安裝。安裝之後的編輯器不支援golang。需要添加支援golang的外掛程式,添加外掛程式有兩種方法。
第一種:
(1)點擊file->setttings->plugins->Browse Repositories;
(2)搜尋go,找到後,點擊install,重起編譯器;
第二種:
(1)下載golang外掛程式的源碼。下載地址:https://codeload.github.com/go-lang-plugin-org/go-lang-idea-plugin/zip/master
(2)編譯源碼,將編譯好的工具,添加到編譯器上。具體方法:http://blog.csdn.net/slug302/article/details/16991323
2、golang編譯環境。
下載地址:http://pc2-dx1.newasp.net/soft/yh/go.windows-amd64.zip
編譯環境安裝也有兩種。
第一種:
直接上官網下載exe檔案,一鍵安裝。
第二種:
這種安裝方式屬於源碼安裝。
下載源碼之後,需要設定環境變數。解壓下載之後的檔案路徑為:D:\go。
添加GOROOT,值為D:\go。同時需要在Path的值加上%GOROOT%\bin。
檢測是否已經安裝成功:
1、開啟cmd,輸入echo %PATH% 看環境變數是否已經加上。沒有的話需要重啟系統。
2、輸入 go version。看是否有資訊輸出。
無論哪一種方式,都需要添加GOPATH。
GOPATH是go命令依賴的一個重要環境變數。它與工作目錄掛鈎。坦白講就是你的工作空間。當有多個工作空間時,直接添加,用分號隔開。GOPATH工作目錄約定有三個子目錄:
-src 存放原始碼(比如:.go 等等)
-pkg 存放編譯後產生的檔案(比如:.a)
-bin 存放編譯後產生的可執行環境
以後自己建立應用或者添加第三方庫、程式碼封裝的時候,都存放在src下。
3、mysql。
下載地址:http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.12-winx64.msi
mysql安裝也有兩種方式。
第一種:直接下載.mis檔案,一鍵安裝。
第二種:.zip包安裝。
(1)下載源碼之後,解壓後,需要更改環境變數。往Path添加:D:\mysql5.7\bin(解壓後檔案的路徑);
(2)修改設定檔 my-default.ini.
#basedir = => basedir =D:\mysql5.7
#datadir = => datadir =D:\mysql5.7\data
(3)開啟cmd,輸入:mysqld -install;
(4)net start mysql;
(5)mysql -u root -p。輸完之後會提示輸入密碼,密碼為空白,直接按斷行符號;
(6)use mysql => update user set password=password('123456') where user ='root';(修改root的密碼)
(7)重啟mysql。net stop mysql => net start mysql;
4、安裝mysql驅動
golang操作mysql,需要mysql驅動。mysql驅動源碼下載:https://github.com/go-sql-driver/mysql
(1)下載完源碼之後,將源碼拷貝到GOPATH的工作目錄src下;
(2)開啟cmd,cd至放驅動源碼的地方;
(3)go install;開啟GOPATH目錄pkg,可以看到產生的.a檔案,也就是mysql驅動檔案。
(4)寫代碼測試是否可以串連資料庫。代碼如下:
package mainimport ("database/sql""fmt"_ "reptiles/src/mysql-driver"//產生驅動檔案的目錄名字)type User struct {id intusername, password string}var sqldata map[interface{}]interface{}func main() {var u Userdb, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/splider?charset=utf8")check(err)//插入資料stmt, err := db.Prepare("INSERT t_test SET s_username=?,s_pwd=?")check(err)res, err := stmt.Exec("xiaowei", "xiaowei")check(err)id, err := res.LastInsertId()check(err)fmt.Println(id)//查詢資料rows, err := db.Query("SELECT * FROM t_test")check(err)fmt.Println(rows.Columns())userinfo := make(map[interface{}]interface{})for rows.Next() {err := rows.Scan(&u.id, &u.username, &u.password)check(err)userinfo[u.id] = u}fmt.Println(userinfo)}func check(err error) {if err != nil {fmt.Println(err)}}