真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言cgo go語言教程

為什么要使用 Go 語言?Go 語言的優(yōu)勢在哪里?

1、簡單易學。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站設計、網(wǎng)站制作、商丘網(wǎng)絡推廣、重慶小程序開發(fā)公司、商丘網(wǎng)絡營銷、商丘企業(yè)策劃、商丘品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供商丘建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。

2、并發(fā)性好。

Go語言天生支持并發(fā),可以充分利用多核,輕松地使用并發(fā)。 這是Go語言最大的特點。

描述

Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。

在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go中動態(tài)加載部分函數(shù)。

與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 切片(Slice) 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語言級支持。

Go 語言交叉編譯和構建標簽

現(xiàn)代應用支持多平臺運行是一件稀松平常的事情,在 Go 語言里面,為了支持應用的多平臺部署,給用戶提供了方便的配置方式來輕松構建針對不同操作系統(tǒng)和平臺的運行文件。

Go 的構建約束,即構建標簽,是以 // go:build 為開始的行注釋,如果是 1.16 或之前的版本,格式是 // +build 。跟此變更相關的 issue 可以參考 25348 。

構建標簽必須出現(xiàn)在 package 子句之前。為了區(qū)分構建標簽和包文檔的描述注釋,構建標簽后面應該有一個空行。

構建標簽由||, , !運算符以及括號來組合表達。運算符與 Go 中的含義相同。

例如,以下構建標簽在滿足 linux 和 386 約束,或者滿足 darwin 而 cgo 不滿足時構建文件:

//go:build (linux 386) || (darwin !cgo)

又如:僅在使用 cgo 時,且僅在 Linux 和 OS X 上構建文件: //go:build cgo (linux || darwin)

注意:1.17 及以后的表達格式里,一個文件有多個 //go:build 行是錯誤的。

在 1.16 及以前的版本,多行構建標簽是允許的,并且組合方式是通過空格和逗號等來區(qū)分,空格符表示 OR,逗號表示 AND,感嘆號表示 NOT。而多行之間則表示 OR。gofmt 命令將在遇到舊語法時添加等效的 //go:build 約束。如下是示例:

如果文件名在去除擴展名和可能的 _test 后綴后匹配以下任何模式, (例如:source_windows_amd64.go)其中 GOOS 和 GOARCH 分別代表任何已知的操作系統(tǒng)和體系結構值,那么認為該文件除了文件中的任何顯式約束之外,具有這些術語的所表達的隱式構建標簽。

除了官方提供的針對不同平臺的內置標簽,用戶也可以使用自定義標簽,例如 //go:build prod , 只需要在執(zhí)行 go build 時顯式帶上標簽名 go build --tags=prod 。

想要使文件構建時被忽略,可以使用: //go:build ignore ,其他任何沒有被用來定義為標簽的詞也可以,但"ignore"是約定俗成的。)。Go 語言目前支持的系統(tǒng)和架構可以參考 官方文檔 。

golang cgo 怎么傳字符串

第一步:all.bash

% cd $GOROOT/src

% ./all.bash

第一步有些突兀,因為 all.bash 僅僅調用了其它兩個 shell 腳本;make.bash 和 run.bash。如果你在使用 Windows 或 Plan 9,過程是一樣的,只是腳本擴展名變成了.bat 或.rc。對于本文中的其它腳本,請根據(jù)你的系統(tǒng)適當改動。

第二步:make.bash

. ./make.bash --no-banner

main.bash 來源于 all.bash,因此調用退出將正確終止便宜進程。main.bash 有三個主要工作,第一個是驗證編譯 Go 的環(huán)境是否完整。完整性檢查在過去幾年中建立,它通常嘗試避免使用已知的破損工具或必然失敗的環(huán)境進行編譯。

第三步. cmd/dist

gcc -O2 -Wall -Werror -ggdb -o cmd/dist/dist -Icmd/dist cmd/dist/*.c

一旦可用性檢查完畢,make.bash 將編譯產(chǎn)生 cmd/dist,cmd/dist取代了之前存在于Go 1 之前的Makefile 編譯系統(tǒng)。cmd/dist用來管理少量的pkg/runtime的代碼生成。cmd/dist 是C語言編寫的程序,能夠充分利用系統(tǒng)C編譯器和頭文件來處理大部分主機系統(tǒng)平臺的檢測。cmd/dist通常用來檢測主機的操作系統(tǒng)和體系結構,即環(huán)境變量$GOHOSTOS和$GOHOSTARCH .如果是交叉編譯的話,變量 $GOOS和$GOARCH可能會由于你的設置而不同。事實上,Go 通常用作跨平臺編譯器,只不過多數(shù)情況下,主機和目標系統(tǒng)一致而已。接下來,make.bash 調用cmd/dist 的引導參數(shù)的支持庫、 lib9、 libbio 和 libmach,使用編譯器套件,然后用自己的編譯器進行編譯。這些工具也是用 C 語言寫的中,但是由系統(tǒng) C 編譯器編譯產(chǎn)生。

echo "# Building compilers and Go bootstrap tool for host, $GOHOSTOS/$GOHOSTARCH."

buildall="-a"

if [ "$1" = "--no-clean" ]; then

buildall=""

fi

./cmd/dist/dist bootstrap $buildall -v # builds go_bootstrap

使用的編譯器套件 cmd/dist 編譯產(chǎn)生一個版本的gotool,go_bootstrap。但go_bootstrap并不是完整得gotool,比方說 pkg/net 就是孤立的,避免了依賴于 cgo。要編譯的文件的列表以及它們的依賴項,是由cmd/dist編譯的 ,所以十分謹慎地避免引入新的生成依賴項 到 cmd/go。

第四步:go_bootstrap

現(xiàn)在, go_bootstrap 編譯完成了,make.bash 的最后一部就是使用 go_bootstrap 完成 Go 標準庫的編譯,包括整套 gotool 的替換版。

echo "# Building packages and commands for $GOOS/$GOARCH."

"$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" \

-ldflags "$GO_LDFLAGS" -v std

第五步:run.bash

現(xiàn)在,make.bash 完成了,運行回到了 all.bash,它將引用 run.bash。run.bash 的工作是編譯和測試標準庫,運行時以及語言測試套件。

Go 語言到底適合干什么?

Go語言主要用作服務器端開發(fā),其定位是用來開發(fā)“大型軟件”的,適合于需要很多程序員一起開發(fā),并且開發(fā)周期較長的大型軟件和支持云計算的網(wǎng)絡服務。

Go語言融合了傳統(tǒng)編譯型語言的高效性和腳本語言的易用性和富于表達性,不僅提高了項目的開發(fā)速度,而且后期維護起來也非常輕松。

編譯器

當前有兩個Go編譯器分支,分別為官方編譯器gc和gccgo。官方編譯器在初期使用C寫成,后用Go重寫從而實現(xiàn)自舉。Gccgo是一個使用標準GCC作為后端的Go編譯器。

官方編譯器支持跨平臺編譯(但不支持CGO),允許將源代碼編譯為可在目標系統(tǒng)、架構上執(zhí)行的二進制文件。


文章標題:go語言cgo go語言教程
本文地址:http://weahome.cn/article/dosjsde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部