老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

源碼語言go,源碼語言更改

Go源碼編譯

以go 1.18.2版本為例;假設你還沒有在系統裝安裝go環境;下面一步步教你源碼編譯。

我們提供的服務有:網站設計制作、網站建設、微信公眾號開發、網站優化、網站認證、垣曲ssl等。為1000+企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的垣曲網站制作公司

系統環境:

到此,運行go命令的時候,就是使用源碼編譯的二進制了。如果之后有需求修改go源碼。重復如下步驟即可:

一學就會,手把手教你用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,相信讀者也知道運行結果是正確的了。

開始讀 Go 源碼了

學完 Go 的基礎知識已經有一段時間了,那么接下來應該學什么呢?有幾個方向可以考慮,比如說 Web 開發,網絡編程等。

在下一階段的學習之前,寫了一個開源項目 Go 開發的一款分布式唯一 ID 生成系統,如果你對這個項目感興趣的話,可以在 GitHub 上拿到源碼。

在寫項目的過程中,發現一個問題。實現功能是沒問題的,但不知道自己寫的代碼是不是符合 Go 的風格,是不是夠優雅。所以我覺得相比于繼續學習應用開發,不如向底層前進,打好基礎,打好寫 Go 代碼的基礎。

所以,我決定開始讀 Go 標準庫源碼,Go 一共有 150+ 標準庫,想要全部讀完的話不是不可能,但絕對是一項大工程,希望自己能堅持下去。

為什么從 Go 標準庫的源碼開始讀呢?因為最近也看了一些 Go 底層原理的書,說實話,像 goroutine 調度,gc 垃圾回收這些內容,根本就看不懂。這要是一上來就讀這部分代碼,恐怕直接就放棄 Go 語言學習了。

而標準庫就不一樣了,有一部分代碼根本不涉及底層原理,實現也相對簡單,同時又能對 Go 的理念加深理解,作為入門再好不過了。然后再由簡入深,循序漸進,就像打怪升級一樣,一步一步征服 Go。

說了這么多,那到底應該怎么讀呢?我想到了一些方法:

可以通過上面的一種或幾種方法相結合,然后再不斷閱讀不斷總結,最終找到一個完全適合自己的方法。

下面是我總結的一些標準庫及功能介紹:

這里僅僅列舉了一部分標準庫,更全面的標準庫列表大家可以直接看官網。

那么問題來了,這么多庫從何下手呢?

我這里做一個簡單的分類,由于水平有限,只能做一些簡單的梳理,然后大家可以結合自己的實際情況來做選擇。

有些庫涉及到非常專業的知識,投入產出比可能會比較低。比如 archive 、 compress 以及 crypto ,涉及到壓縮算法以及加密算法的知識。

有些庫屬于工具類,比如 bufio 、 bytes 、 strings 、 path 、 strconv 等,這些庫不涉及領域知識,閱讀起來比較容易。

有些庫屬于與操作系統打交道的,比如 os , net 、 sync 等,學習這些庫需要對操作系統有明確的認識。

net 下的很多子包與網絡協議相關,比如 net/http ,涉及 http 報文的解析,需要對網絡協議比較了解。

如果想要深入了解語言的底層原理,則需要閱讀 runtime 庫。

要想快速入門,并且了解語言的設計理念,建議閱讀 io 以及 fmt 庫,閱讀后會對接口的設計理解更深。

我已經看了一些源碼,雖然過程痛苦,但確實非常有用。前期可能理解起來比較困難,用的時間長一些,但形成固定套路之后,會越來越熟悉,用的時間也會更少,理解也會更深刻。

開源項目:

如何配置go語言開發環境

1.1 Go 安裝

Go的三種安裝方式

Go有多種安裝方式,你可以選擇自己喜歡的。這里我們介紹三種最常見的安裝方式:

Go源碼安裝:這是一種標準的軟件安裝方式。對于經常使用Unix類系統的用戶,尤其對于開發者來說,從源碼安裝可以自己定制。

Go標準包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統。這種方式適合快速安裝,可根據自己的系統位數下載好相應的安裝包,一路next就可以輕松安裝了。**推薦這種方式**

第三方工具安裝:目前有很多方便的第三方軟件包工具,例如Ubuntu的apt-get、Mac的homebrew等。這種安裝方式適合那些熟悉相應系統的用戶。

最后,如果你想在同一個系統中安裝多個版本的Go,你可以參考第三方工具GVM,這是目前在這方面做得最好的工具,除非你知道怎么處理。

Go源碼安裝

在Go的源代碼中,有些部分是用Plan 9 C和ATT匯編寫的,因此假如你要想從源碼安裝,就必須安裝C的編譯工具。

在Mac系統中,只要你安裝了Xcode,就已經包含了相應的編譯工具。

在類Unix系統中,需要安裝gcc等工具。例如Ubuntu系統可通過在終端中執行sudo apt-get install gcc

libc6-dev來安裝編譯工具。

在Windows系統中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設置相應的環境變量。

你可以直接去官網下載源碼,找相應的goVERSION.src.tar.gz的文件下載,下載之后解壓縮到$HOME目錄,執行如下代碼:

cd go/src

./all.bash

運行all.bash后出現"ALL TESTS PASSED"字樣時才算安裝成功。

上面是Unix風格的命令,Windows下的安裝方式類似,只不過是運行all.bat,調用的編譯器是MinGW的gcc。

如果是Mac或者Unix用戶需要設置幾個環境變量,如果想重啟之后也能生效的話把下面的命令寫到.bashrc或者.zshrc里面,

export GOPATH=$HOME/gopath

export PATH=$PATH:$HOME/go/bin:$GOPATH/bin

如果你是寫入文件的,記得執行bash .bashrc或者bash

.zshrc使得設置立馬生效。

如果是window系統,就需要設置環境變量,在path里面增加相應的go所在的目錄,設置gopath變量。

當你設置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經安裝成功

圖1.1 源碼安裝之后執行Go命令的圖

如果出現Go的Usage信息,那么說明Go已經安裝成功了;如果出現該命令不存在,那么可以檢查一下自己的PATH環境變中是否包含了Go的安裝目錄。

關于上面的GOPATH將在下面小節詳細講解

Go標準包安裝

Go提供了每個平臺打好包的一鍵安裝,這些包默認會安裝到如下目錄:/usr/local/go

(Windows系統:c:\Go),當然你可以改變他們的安裝位置,但是改變之后你必須在你的環境變量中設置如下信息:

export GOROOT=$HOME/go

export GOPATH=$HOME/gopath

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

上面這些命令對于Mac和Unix用戶來說最好是寫入.bashrc或者.zshrc文件,對于windows用戶來說當然是寫入環境變量。

如何判斷自己的操作系統是32位還是64位?

我們接下來的Go安裝需要判斷操作系統的位數,所以這小節我們先確定自己的系統類型。

Windows系統用戶請按Win+R運行cmd,輸入systeminfo后回車,稍等片刻,會出現一些系統信息。在“系統類型”一行中,若顯示“x64-based

PC”,即為64位系統;若顯示“X86-based PC”,則為32位系統。

Mac系統用戶建議直接使用64位的,因為Go所支持的Mac OS X版本已經不支持純32位處理器了。

Linux系統用戶可通過在Terminal中執行命令arch(即uname

-m)來查看系統信息:

64位系統顯示

x86_64

32位系統顯示

i386

Mac 安裝

訪問下載地址,32位系統下載go1.4.2.darwin-386-osx10.8.pkg,64位系統下載go1.4.2.darwin-amd64-osx10.8.pkg,雙擊下載文件,一路默認安裝點擊下一步,這個時候go已經安裝到你的系統中,默認已經在PATH中增加了相應的~/go/bin,這個時候打開終端,輸入go

看到類似上面源碼安裝成功的圖片說明已經安裝成功

如果出現go的Usage信息,那么說明go已經安裝成功了;如果出現該命令不存在,那么可以檢查一下自己的PATH環境變中是否包含了go的安裝目錄。

Linux 安裝

訪問下載地址,32位系統下載go1.4.2.linux-386.tar.gz,64位系統下載go1.4.2.linux-amd64.tar.gz,

假定你想要安裝Go的目錄為 $GO_INSTALL_DIR,后面替換為相應的目錄路徑。

解壓縮tar.gz包到安裝目錄下:tar zxvf go1.4.2.linux-amd64.tar.gz -C

$GO_INSTALL_DIR。

設置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin

然后執行go

圖1.2 Linux系統下安裝成功之后執行go顯示的信息

如果出現go的Usage信息,那么說明go已經安裝成功了;如果出現該命令不存在,那么可以檢查一下自己的PATH環境變中是否包含了go的安裝目錄。

Windows 安裝

訪問Google Code 下載頁,32

位請選擇名稱中包含 windows-386 的 msi 安裝包,64 位請選擇名稱中包含 windows-amd64 的。下載好后運行,不要修改默認安裝目錄

C:\Go\,若安裝到其他位置會導致不能執行自己所編寫的 Go 代碼。安裝完成后默認會在環境變量 Path 后添加 Go 安裝目錄下的 bin 目錄

C:\Go\bin\,并添加環境變量 GOROOT,值為 Go 安裝根目錄 C:\Go\ 。

驗證是否安裝成功

在運行中輸入 cmd 打開命令行工具,在提示符下輸入 go,檢查是否能看到 Usage 信息。輸入

cd %GOROOT%,看是否能進入 Go 安裝目錄。若都成功,說明安裝成功。

不能的話請檢查上述環境變量 Path 和 GOROOT 的值。若不存在請卸載后重新安裝,存在請重啟計算機后重試以上步驟。

第三方工具安裝

GVM

gvm是第三方開發的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當的方便,安裝gvm使用如下命令:

bash (curl -s -S -L )

安裝完成后我們就可以安裝go了:

gvm install go1.4.2

gvm use go1.4.2

也可以使用下面的命令,省去每次調用gvm use的麻煩: gvm use go1.4.2 --default

執行完上面的命令之后GOPATH、GOROOT等環境變量會自動設置好,這樣就可以直接使用了。

apt-get

Ubuntu是目前使用最多的Linux桌面系統,使用apt-get命令來管理軟件包,我們可以通過下面的命令來安裝Go,為了以后方便,應該把

git mercurial 也安裝上:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:gophers/go

sudo apt-get update

sudo apt-get install golang-stable git-core mercurial

homebrew

homebrew是Mac系統下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應該把

git mercurial 也安裝上:

brew update brew upgrade

brew install go

brew install git

brew install mercurial

go的簡介

Go語言于2009年11月正式宣布推出,成為開放源代碼項目,并在Linux及Mac OS X平臺上進行了實現,后追加Windows系統下的實現。

谷歌資深軟件工程師羅布·派克(Rob Pike)表示,“Go讓我體驗到了從未有過的開發效率。”派克表示,和今天的C++或C一樣,Go是一種系統語言。他解釋道,“使用它可以進行快速開發,同時它還是一個真正的編譯語言,我們之所以現在將其開源,原因是我們認為它已經非常有用和強大。”

2007年,谷歌把Go作為一個20%項目開始研發,即讓員工抽出本職工作之外時間的20%,投入在該項目上。除了派克外,該項目的成員還有其它一些谷歌工程師。

派克表示,編譯后Go代碼的運行速度與C語言非常接近,而且編譯速度非常快,就像在使用一個交互式語言。

現有編程語言均未專門對多核處理器進行優化。派克表示,Go就是谷歌工程師為這類程序編寫的一種語言。它不是針對編程初學者設計的,但學習使用它也不是非常困難。Go支持面向對象,而且具有真正的封裝(closures)和反射(reflection)等功能。

在學習曲線方面,派克認為Go與Java類似,對于Java開發者來說,應該能夠輕松學會Go。

之所以將Go作為一個開源項目發布,目的是讓開源社區有機會創建更好的工具來使用該語言,例如Eclipse IDE中的插件。目前還沒有支持Go的IDE。

在目前谷歌公開發布的所有網絡應用中,均沒有使用Go。但是谷歌已經使用該語言開發了幾個內部項目。

派克表示,Go是否會對谷歌即將推出的Chrome OS產生影響,現在還言之尚早,不過Go的確可以和Native Client配合使用。他表示,“Go可以讓應用完美的運行在瀏覽器內。”例如,使用Go可以更高效的實現Wave,無論是在前端還是后臺。

Go語言是一種新的語言,一種并發的、帶垃圾回收的、快速編譯的語言。它具有以下特點:

1.它可以在一臺計算機上用幾秒鐘的時間編譯一個大型的Go程序。

2.Go語言為軟件構造提供了一種模型,它使依賴分析更加容易,且避免了大部分C風格include文件與庫的開頭。

3.Go語言是靜態類型的語言,它的類型系統沒有層級。因此用戶不需要在定義類型之間的關系上花費時間,這樣感覺起來比典型的面向對象語言更輕量級。

4.Go語言完全是垃圾回收型的語言,并為并發執行與通信提供了基本的支持。

按照其設計,Go打算為多核機器上系統軟件的構造提供一種方法。

Go語言是一種編譯型語言,它結合了解釋型語言的游刃有余,動態類型語言的開發效率,以及靜態類型的安全性。它也打算成為現代的,支持網絡與多核計算的語言。要滿足這些目標,需要解決一些語言上的問題:一個富有表達能力但輕量級的類型系統,并發與垃圾回收機制,嚴格的依賴規范等等。這些無法通過庫或工具解決好,因此Go也就應運而生了。

如何學習GO語言?

Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程序員查閱知識點。

Go 語言

這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發,無須第三方庫、開發者的編程技巧和開發經驗就可以輕松搞定。

Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的性能與安全性”。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統,還提供了強大的網絡編程和并發編程支持。Go語言的用途眾多,可以進行網絡編程、系統編程、并發編程、分布式編程。

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發性好、語言設計良好、執行性能好”等優勢,目前國內諸多 IT 公司均已采用Go語言開發項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現有操作系統的無縫適配。

因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現多態性。Go語言有一個清晰易懂的輕量級類型系統,在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

此外,很多重要的開源項目都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節碼)格式;在編譯代碼時,編譯器檢查錯誤、優化性能并輸出可在不同平臺上運行的二進制文件。要創建并運行 Go 程序,程序員必須執行如下步驟。

使用文本編輯器創建 Go 程序;

保存文件;編譯程序;運行編譯得到的可執行文件。

這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的“智慧學習工場2020-學碩創新工作站 ”唯一獲準的“區塊鏈技術專業”試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。


新聞名稱:源碼語言go,源碼語言更改
網頁地址:http://www.xueling.net.cn/article/hsdpos.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩一区二区三区色 | 粗壮挺进人妻水蜜桃成熟 | 亚洲免费视频一区二区三区 | 成人在线视频一区二区 | segui88久久综合9999 | 91精品国产综合久久小仙女图片 | 4HU四虎永久免费地址WW416 | 国产成人手机在线 | 日本高清www色视频总站免费 | av在线免费网 | 精品欧美乱码久久久久久1区2区 | 欧美高潮一区 | 日本片一区 | 4d玉蒲团奶水都喷出来了免费 | 制服诱惑一区 | 最新亚洲av日韩av二区 | 国产重口老太和小伙乱 | 2021国产亚洲日韩在线 | 综合激情丁香久久狠狠 | 欧美激情精品久久久久久大尺度 | 欧美a性| 亚洲精品国品乱码久久久久 | 精品一线二线三线区别在哪欧美 | 久久网中文字幕 | 日本大片在线观看 | 欧美日韩成人一区二区三区 | 亚洲春色无码Av不卡久久 | 美女搞久久 | 中文字幕天使萌在线va | 亚洲精品专区一区8v | 性色欲网站人妻丰满中文久久不卡 | 国产精品三级久久久久三级 | 二区三区在线观看 | 国产精品av久久久久久无 | 亚州中文字幕 | 污污网站免费看 | 国产中文成人精品久久久 | 在线1区 | 性少妇videosexfre| 亚洲爆乳精品无码一区二区 | 97香蕉久久国产在线观看 |