欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

go語言怎么看源代碼 go 代碼

如何學(xué)習(xí)GO語言?

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

吉安網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),吉安網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為吉安成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的吉安做網(wǎng)站的公司定做!

Go 語言

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

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

Go語言是編程語言設(shè)計的又一次嘗試,是對類C語言的重大改進(jìn),它不但能讓你訪問底層操作系統(tǒng),還提供了強大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

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

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

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

使用文本編輯器創(chuàng)建 Go 程序;

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

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

鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開展的“智慧學(xué)習(xí)工場2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專業(yè)”試點工作站。專業(yè)站立足為學(xué)生提供多樣化成長路徑,推進(jìn)專業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。

如何創(chuàng)建,編譯,打包go語言的源代碼和工程

1.最簡單的方法:

public static String reverse1(String str)

{ return new StringBuffer(str).reverse().toString();

}

2.最常用的方法:

public static String reverse3(String s)

{ char[] array = s.toCharArray();

String reverse = ""; //注意這是空串,不是null

for (int i = array.length - 1; i = 0; i--)

reverse += array[i];

return reverse;

}

3.常用方法的變形:

public static String reverse2(String s)

{ int length = s.length();

String reverse = ""; //注意這是空串,不是null

for (int i = 0; i length; i++)

reverse = s.charAt(i) + reverse;//在字符串前面連接, 而非常見的后面

return reverse;

}

go語言如何調(diào)用c函數(shù)

直接嵌入c源代碼到go代碼里面

package main

/*

#include stdio.h

void myhello(int i) {

printf("Hello C: %d\n", i);

}

*/

import "C"

import "fmt"

func main() {

C.myhello(C.int(12))

fmt.Println("Hello Go");

}

需要注意的是C代碼必須放在注釋里面

import "C"語句和前面的C代碼之間不能有空行

運行結(jié)果

$ go build main.go ./main

Hello C: 12

Hello Go

分開c代碼到單獨文件

嵌在一起代碼結(jié)構(gòu)不是很好看,很多人包括我,還是喜歡把兩個分開,放在不同的文件里面,顯得干凈,go源文件里面是go的源代碼,c源文件里面是c的源代碼。

$ ls

hello.c hello.h main.go

$ cat hello.h

void hello(int);

$ cat hello.c

#include stdio.h

void hello(int i) {

printf("Hello C: %d\n", i);

}

$ cat main.go

package main

// #include "hello.h"

import "C"

import "fmt"

func main() {

C.hello(C.int(12))

fmt.Println("Hello Go");

}

編譯運行

$ go build ./main

Hello C: 12

Hello Go

編譯成庫文件

如果c文件比較多,最好還是能夠編譯成一個獨立的庫文件,然后go來調(diào)用庫。

$ find mylib main

mylib

mylib/hello.h

mylib/hello.c

main

main/main.go

編譯庫文件

$ cd mylib

# gcc -fPIC -shared -o libhello.so hello.c

編譯go程序

$ cd main

$ cat main.go

package main

// #cgo CFLAGS: -I../mylib

// #cgo LDFLAGS: -L../mylib -lhello

// #include "hello.h"

import "C"

import "fmt"

func main() {

C.hello(C.int(12))

fmt.Println("Hello Go");

}

$ go build main.go

運行

$ export LD_LIBRARY_PATH=../mylib

$ ./main

Hello C: 12

Hello Go

在我們的例子中,庫文件是編譯成動態(tài)庫的,main程序鏈接的時候也是采用的動態(tài)庫

$ ldd main

linux-vdso.so.1 = (0x00007fffc7968000)

libhello.so = ../mylib/libhello.so (0x00007f513684c000)

libpthread.so.0 = /lib64/libpthread.so.0 (0x00007f5136614000)

libc.so.6 = /lib64/libc.so.6 (0x00007f5136253000)

/lib64/ld-linux-x86-64.so.2 (0x000055d819227000)

理論上講也是可以編譯成整個一靜態(tài)鏈接的可執(zhí)行程序,由于我的機器上缺少靜態(tài)鏈接的系統(tǒng)庫,比如libc.a,所以只能編譯成動態(tài)鏈接。

如何配置go語言開發(fā)環(huán)境

1.1 Go 安裝

Go的三種安裝方式

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

Go源碼安裝:這是一種標(biāo)準(zhǔn)的軟件安裝方式。對于經(jīng)常使用Unix類系統(tǒng)的用戶,尤其對于開發(fā)者來說,從源碼安裝可以自己定制。

Go標(biāo)準(zhǔn)包安裝:Go提供了方便的安裝包,支持Windows、Linux、Mac等系統(tǒng)。這種方式適合快速安裝,可根據(jù)自己的系統(tǒng)位數(shù)下載好相應(yīng)的安裝包,一路next就可以輕松安裝了。**推薦這種方式**

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

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

Go源碼安裝

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

在Mac系統(tǒng)中,只要你安裝了Xcode,就已經(jīng)包含了相應(yīng)的編譯工具。

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

libc6-dev來安裝編譯工具。

在Windows系統(tǒng)中,你需要安裝MinGW,然后通過MinGW安裝gcc,并設(shè)置相應(yīng)的環(huán)境變量。

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

cd go/src

./all.bash

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

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

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

export GOPATH=$HOME/gopath

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

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

.zshrc使得設(shè)置立馬生效。

如果是window系統(tǒng),就需要設(shè)置環(huán)境變量,在path里面增加相應(yīng)的go所在的目錄,設(shè)置gopath變量。

當(dāng)你設(shè)置完畢之后在命令行里面輸入go,看到如下圖片即說明你已經(jīng)安裝成功

圖1.1 源碼安裝之后執(zhí)行Go命令的圖

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

關(guān)于上面的GOPATH將在下面小節(jié)詳細(xì)講解

Go標(biāo)準(zhǔn)包安裝

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

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

export GOROOT=$HOME/go

export GOPATH=$HOME/gopath

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

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

如何判斷自己的操作系統(tǒng)是32位還是64位?

我們接下來的Go安裝需要判斷操作系統(tǒng)的位數(shù),所以這小節(jié)我們先確定自己的系統(tǒng)類型。

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

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

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

Linux系統(tǒng)用戶可通過在Terminal中執(zhí)行命令arch(即uname

-m)來查看系統(tǒng)信息:

64位系統(tǒng)顯示

x86_64

32位系統(tǒng)顯示

i386

Mac 安裝

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

看到類似上面源碼安裝成功的圖片說明已經(jīng)安裝成功

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

Linux 安裝

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

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

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

$GO_INSTALL_DIR。

設(shè)置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin

然后執(zhí)行g(shù)o

圖1.2 Linux系統(tǒng)下安裝成功之后執(zhí)行g(shù)o顯示的信息

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

Windows 安裝

訪問Google Code 下載頁,32

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

C:\Go\,若安裝到其他位置會導(dǎo)致不能執(zhí)行自己所編寫的 Go 代碼。安裝完成后默認(rèn)會在環(huán)境變量 Path 后添加 Go 安裝目錄下的 bin 目錄

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

驗證是否安裝成功

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

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

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

第三方工具安裝

GVM

gvm是第三方開發(fā)的Go多版本管理工具,類似ruby里面的rvm工具。使用起來相當(dāng)?shù)姆奖?,安裝gvm使用如下命令:

bash (curl -s -S -L )

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

gvm install go1.4.2

gvm use go1.4.2

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

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

apt-get

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

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系統(tǒng)下面目前使用最多的管理軟件的工具,目前已支持Go,可以通過命令直接安裝Go,為了以后方便,應(yīng)該把

git mercurial 也安裝上:

brew update brew upgrade

brew install go

brew install git

brew install mercurial

GO語言(二十五):管理依賴項(上)-

當(dāng)您的代碼使用外部包時,這些包(作為模塊分發(fā))成為依賴項。隨著時間的推移,您可能需要升級或更換它們。Go 提供了依賴管理工具,可幫助您在合并外部依賴項時確保 Go 應(yīng)用程序的安全。

本主題介紹如何執(zhí)行任務(wù)以管理您在代碼中承擔(dān)的依賴項。您可以使用 Go 工具執(zhí)行其中的大部分操作。本主題還介紹了如何執(zhí)行其他一些您可能會覺得有用的依賴相關(guān)任務(wù)。

您可以通過 Go 工具獲取和使用有用的包。在 pkg.go.dev 上,您可以搜索您可能覺得有用的包,然后使用go命令將這些包導(dǎo)入您自己的代碼中以調(diào)用它們的功能。

下面列出了最常見的依賴項管理步驟。

在 Go 中,您將依賴項作為包含您導(dǎo)入的包的模塊來管理。此過程由以下機構(gòu)支持:

您可以搜索pkg.go.dev以查找具有您可能覺得有用的功能的軟件包。

找到要在代碼中使用的包后,在頁面頂部找到包路徑,然后單擊復(fù)制路徑按鈕將路徑復(fù)制到剪貼板。在您自己的代碼中,將路徑粘貼到導(dǎo)入語句中,如下例所示:

在您的代碼導(dǎo)入包后,啟用依賴項跟蹤并獲取包的代碼進(jìn)行編譯。

要跟蹤和管理您添加的依賴項,您首先要將代碼放入其自己的模塊中。這會在源代碼樹的根目錄創(chuàng)建一個 go.mod 文件。您添加的依賴項將列在該文件中。

要將您的代碼添加到它自己的模塊中,請使用 go mod init命令。例如,從命令行切換到代碼的根目錄,然后按照以下示例運行命令:

該go mod init命令的參數(shù)是您的模塊的模塊路徑。如果可能,模塊路徑應(yīng)該是源代碼的存儲庫位置。

如果一開始您不知道模塊的最終存儲庫位置,請使用安全的替代品。這可能是您擁有的域的名稱或您控制的另一個名稱(例如您的公司名稱),以及來自模塊名稱或源目錄的路徑。

當(dāng)您使用 Go 工具管理依賴項時,這些工具會更新 go.mod 文件,以便它維護(hù)您的依賴項的當(dāng)前列表。

添加依賴項時,Go 工具還會創(chuàng)建一個 go.sum 文件,其中包含您所依賴的模塊的校驗和。Go 使用它來驗證下載的模塊文件的完整性,特別是對于在您的項目上工作的其他開發(fā)人員。

在代碼中包含存儲庫中的 go.mod 和 go.sum 文件。

當(dāng)您運行g(shù)o mod init創(chuàng)建用于跟蹤依賴項的模塊時,您指定一個模塊路徑作為模塊的名稱。模塊路徑成為模塊中包的導(dǎo)入路徑前綴。一定要指定一個不會與其他模塊的模塊路徑?jīng)_突的模塊路徑。

至少,一個模塊路徑只需要表明它的來源,例如公司或作者或所有者名稱。但是路徑也可能更能描述模塊是什么或做什么。

模塊路徑通常采用以下形式:

1、Go 工具可以在其中找到模塊源代碼的存儲庫的位置。

例如,它可能是github.com/ /.

如果您認(rèn)為您可能會發(fā)布模塊供其他人使用,請使用此最佳實踐。

2、一個你控制的名字。

如果您不使用存儲庫名稱,請務(wù)必選擇一個您確信不會被其他人使用的前綴。一個不錯的選擇是您公司的名稱。避免使用常用術(shù)語,例如widgets、utilities或 app。

Go 保證以下字符串不會在包名稱中使用。

1、test– 您可以將test用作模塊路徑前綴以便代碼用于在另一個模塊中本地測試功能進(jìn)行測試。

使用test作為模塊路徑前綴是測試的一部分。例如,您的測試本身可能會運行g(shù)o mod init test,然后以某種特定方式設(shè)置該模塊,以便使用 Go 源代碼分析工具進(jìn)行測試。

2、example– 在某些 Go 文檔中用作模塊路徑前綴,例如在創(chuàng)建模塊以跟蹤依賴關(guān)系的教程中。

請注意,Go 文檔還用于example.com說明示例何時可能是已發(fā)布的模塊。

網(wǎng)站標(biāo)題:go語言怎么看源代碼 go 代碼
當(dāng)前網(wǎng)址:http://aaarwkj.com/article14/docpcge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)企業(yè)建站、搜索引擎優(yōu)化App開發(fā)、全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
欧美另类亚洲综合久青草| 日韩中文字幕免费一区二区| 精品人妻在线中文字幕| 欧美日韩亚洲视频一区久久| 午夜福利福利一区二区| 人人狠狠综合久久亚洲| 亚洲精品在线观看日韩欧美| 国产精品大白屁股视频| 91九色最新国产在线| 97公开视频在线观看| 这里只有精品国产999| 成人在线免费观看视频国产| 国产精品国产亚洲精品| 91美女黑丝免费国产视频| 国产精品国产三级丝袜| 国产一级二级三级大胆视频| 国产熟乱老女人露脸视频| 久久99热这里只频精品| 国产亚洲精品a久久7777| 久久久久久亚洲精品少妇| 日本熟妇一区二区三区高清视频| 亚洲综合色日本日b网| 亚洲视频在线的视频在| 91桃色午夜福利视频| 亚洲一区二区视频在线观看免费| 色国产精品一区在线观看| 国产不卡高清视频在线| 色吊丝日韩在线观看| 欧美经典三级一区二区三区| 欧美一级特黄大片做受| 射精视频在线观看免费| 亚洲av成人噜噜网站| 成人午夜性色福利视频| 黄色亚洲一区二区三区四区| 亚洲成a人片777777久久| 国产成人在线观看av| 粉嫩在线一区二区懂色| 亚洲黄色录像一区二区人妻黑人| 亚洲一区二区三区日韩精品| 黄色午夜福利在线观看| 欧美精品一区二区久久|