重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
brew install go
在建平等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都網站設計、成都網站制作 網站設計制作按需求定制開發,公司網站建設,企業網站建設,成都品牌網站建設,網絡營銷推廣,外貿網站制作,建平網站建設費用合理。
輸入 brew info go 或者 go env 即可查看當前安裝的golang版本信息
注意:千萬不要把GOPATH設置成go的安裝路徑,可以自己在用戶目錄下創建一個目錄,例如mygo
一般安裝好go之后,使用go env查看一下當前環境。此時顯示出來的GOROOT就是你使用brew安裝go的安裝目錄,這個路徑要記下來。接下來要在bash_profile文件中進行配置。
使用vim ~/.bash_profile
然后在這個文件中進行編輯,下面以我的電腦為例,路徑這種要根據不同人的情況而定
GOROOT=/usr/local/Cellar/go/1.10.1/libexec (改成自己的go安裝目錄 go env命令可查看)
export GOROOT (不用動)
export GOPATH=/Users/jiangqiaowei/mygo (創建一個自己的文件夾 管理go相關內容)
export GOBIN=$GOPATH/bin (不用改)
export PATH=$PATH:$GOBIN:$GOROOT/bin (不用改)
$ go get golang.org/x/mobile/cmd/gomobile (需要墻)
gomobile init
$ go get -d golang.org/x/mobile/example/bind/...
$ cd $GOPATH/src/golang.org/x/mobile/example/bind
$ gomobile bind -target=ios golang.org/x/mobile/example/bind/hello
此命令在ios/路徑下生成bind.xcodeprojxcode項目以及 在bind/目錄下生成一個 hello.framework
拖入項目即可使用
將下載的zip包解壓,然后執行 File - open 操作打開該項目
打開該項目后,進行 SDK 和 模塊配置
執行操作 File - Project Structure 打開項目結構配置窗口
如下圖配置,SDKs 中設置 JDK、 IDEA 這兩個的路徑(圖上的 Go sdk 你先別管他,你現在還操作不了的)
IDEA 的sdk 其實就是軟件安裝目錄
然后是模塊設置 Modules
設置當前模塊的SDK依賴,如果不設置這里,則編譯時會出現下面的錯誤:
我在這里莫名其妙了好半天才找到原因
然后選擇 ro.redeul.google.go 包進行編譯,如圖:
這里如果沒有出現 error 則編譯成功。
3. 生成插件 jar 安裝包
選擇 Build - Prepare Plugin module ... For Deployment 將會生成一個google-go-language.jar 的文件在項目根目錄下
4. 安裝插件:
選擇 File-settings - Plugins - install plugins from disk 在右下角
選擇剛剛生成的 jar 文件將自動安裝插件,然后重啟軟件就好了
5. 下載安裝 go sdk
選擇你對應的系統版本安裝吧,
然后一些系統環境變量配置,
參考:
新建 變量名:GOBIN 變量值 :C:\Go\bin
新建 變量名:GOARCH 變量值:386
如果是64位系統 變量值為amd64
新建 變量名:GOOS 變量值:windows
新建 變量名: GOROOT 變量值:C:\Go
新建 變量名: GOPATH 變量值:C:\my\go\project
\my\go\project 是你的項目目錄
編輯 Path 在Path的變量值的最后加上 ;C:\Go\bin
之后你新建項目就可以看到 go 的圖標啦
新建好項目 hello world 一下吧 o(∩_∩)o 哈哈 ,可以開始開發你牛逼的 GO 項目了
好了先就這樣吧
《Go語言編程》百度網盤pdf最新全集下載:
鏈接:
?pwd=hcru 提取碼:hcru
簡介:這本書從整體的寫作風格來說,會以介紹 Go 語言特性為主,示例則盡量采用作者平常的實踐,而不是一個沒有太大實際意義的語法示范樣例。 ?
智能合約調用是實現一個 DApp 的關鍵,一個完整的 DApp 包括前端、后端、智能合約及區塊 鏈系統,智能合約的調用是連接區塊鏈與前后端的關鍵。
我們先來了解一下智能合約調用的基礎原理。智能合約運行在以太坊節點的 EVM 中。因此要 想調用合約必須要訪問某個節點。
以后端程序為例,后端服務若想連接節點有兩種可能,一種是雙 方在同一主機,此時后端連接節點可以采用 本地 IPC(Inter-Process Communication,進 程間通信)機制,也可以采用 RPC(Remote Procedure Call,遠程過程調用)機制;另 一種情況是雙方不在同一臺主機,此時只能采用 RPC 機制進行通信。
提到 RPC, 讀者應該對 Geth 啟動參數有點印象,Geth 啟動時可以選擇開啟 RPC 服務,對應的 默認服務端口是 8545。。
接著,我們來了解一下智能合約運行的過程。
智能合約的運行過程是后端服務連接某節點,將 智能合約的調用(交易)發送給節點,節點在驗證了交易的合法性后進行全網廣播,被礦工打包到 區塊中代表此交易得到確認,至此交易才算完成。
就像數據庫一樣,每個區塊鏈平臺都會提供主流 開發語言的 SDK(Software Development Kit,軟件開發工具包),由于 Geth 本身就是用 Go 語言 編寫的,因此若想使用 Go 語言連接節點、發交易,直接在工程內導入 go-ethereum(Geth 源碼) 包就可以了,剩下的問題就是流程和 API 的事情了。
總結一下,智能合約被調用的兩個關鍵點是節點和 SDK。
由于 IPC 要求后端與節點必須在同一主機,所以很多時候開發者都會采用 RPC 模式。除了 RPC,以太坊也為開發者提供了 json- rpc 接口,本文就不展開討論了。
接下來介紹如何使用 Go 語言,借助 go-ethereum 源碼庫來實現智能合約的調用。這是有固定 步驟的,我們先來說一下總體步驟,以下面的合約為例。
步驟 01:編譯合約,獲取合約 ABI(Application Binary Interface,應用二進制接口)。 單擊【ABI】按鈕拷貝合約 ABI 信息,將其粘貼到文件 calldemo.abi 中(可使用 Go 語言IDE 創建該文件,文件名可自定義,后綴最好使用 abi)。
最好能將 calldemo.abi 單獨保存在一個目錄下,輸入“ls”命令只能看到 calldemo.abi 文件,參 考效果如下:
步驟 02:獲得合約地址。注意要將合約部署到 Geth 節點。因此 Environment 選擇為 Web3 Provider。
在【Environment】選項框中選擇“Web3 Provider”,然后單擊【Deploy】按鈕。
部署后,獲得合約地址為:0xa09209c28AEf59a4653b905792a9a910E78E7407。
步驟 03:利用 abigen 工具(Geth 工具包內的可執行程序)編譯智能合約為 Go 代碼。abigen 工具的作用是將 abi 文件轉換為 Go 代碼,命令如下:
其中各參數的含義如下。 (1)abi:是指定傳入的 abi 文件。 (2)type:是指定輸出文件中的基本結構類型。 (3)pkg:指定輸出文件 package 名稱。 (4)out:指定輸出文件名。 執行后,將在代碼目錄下看到 funcdemo.go 文件,讀者可以打開該文件欣賞一下,注意不要修改它。
步驟 04:創建 main.go,填入如下代碼。 注意代碼中 HexToAddress 函數內要傳入該合約部署后的地址,此地址在步驟 01 中獲得。
步驟 04:設置 go mod,以便工程自動識別。
前面有所提及,若要使用 Go 語言調用智能合約,需要下載 go-ethereum 工程,可以使用下面 的指令:
該指令會自動將 go-ethereum 下載到“$GOPATH/src/github.com/ethereum/go-ethereum”,這樣還算 不錯。不過,Go 語言自 1.11 版本后,增加了 module 管理工程的模式。只要設置好了 go mod,下載 依賴工程的事情就不必關心了。
接下來設置 module 生效和 GOPROXY,命令如下:
在項目工程內,執行初始化,calldemo 可以自定義名稱。
步驟 05:運行代碼。執行代碼,將看到下面的效果,以及最終輸出的 2020。
上述輸出信息中,可以看到 Go 語言會自動下載依賴文件,這就是 go mod 的神奇之處。看到 2020,相信讀者也知道運行結果是正確的了。