日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
go語(yǔ)言test能調(diào)試的簡(jiǎn)單介紹

Go 是怎么使用 Go 來(lái)編譯自身的

是Go語(yǔ)言嗎?

成都創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站程序開(kāi)發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、微商城、網(wǎng)站托管及網(wǎng)站維護(hù)公司、WEB系統(tǒng)開(kāi)發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都木托盤行業(yè)客戶提供了網(wǎng)站建設(shè)服務(wù)。

Go 編譯過(guò)程 九個(gè)步驟

第一步. all.bash

% cd $GOROOT/src

% ./all.bash

第一步 all.bash 只是調(diào)用了另外兩個(gè) shell 腳本:make.bash 和run.bash。若使用 Windows 或 Plan9,其過(guò)程也基本類似,只是腳本分別以 .bat 或 .rc 結(jié)尾。在文章的其他部分,請(qǐng)用適當(dāng)?shù)牟僮飨到y(tǒng)對(duì)應(yīng)的擴(kuò)展來(lái)補(bǔ)全命令。

第二步. make.bash

. ./make.bash --no-banner

make.bash 作為 all.bash 內(nèi)容的一部分,如果它退出也會(huì)中斷構(gòu)建過(guò)程

第三步. cmd/dist

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

當(dāng)健全檢查完成后,make.bash 開(kāi)始編譯 cmd/dist。

第四步. go_bootstrap

現(xiàn)在 go_bootstrap 已經(jīng)構(gòu)建完成,make.bash 的最后一步是使用 go_bootstrap 編譯完整的 Go 標(biāo)準(zhǔn)庫(kù),包括一個(gè)完整的 go 工具用以替換。

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 已經(jīng)完成,回到 all.bash 的執(zhí)行,這會(huì)調(diào)用 run.bash。run.bash 的任務(wù)是編譯和測(cè)試標(biāo)準(zhǔn)庫(kù)、運(yùn)行時(shí)以及語(yǔ)言測(cè)試集。

bash run.bash --no-rebuild

由于 make.bash 和 run.bash 都會(huì)調(diào)用 go install -a std,因此需要使用 –no-rebuild 標(biāo)志來(lái)避免重復(fù)前面的步驟,–no-rebuild 跳過(guò)了第二個(gè) go install。

# allow all.bash to avoid double-build of everythingrebuild=trueif [ "$1" = "--no-rebuild" ]; then shiftelse echo '# Building packages and commands.' time go install -a -v std echofi

第六步. go test -a std

echo '# Testing packages.'

time go test std -short -timeout=$(expr 120 \* $timeout_scale)s

echo

接下來(lái) run.bash 會(huì)在標(biāo)準(zhǔn)庫(kù)里所有的包上來(lái)運(yùn)行用 testing 包編寫的單元測(cè)試。由于 $GOPATH 和 $GOROOT 中有著相同的命名空間,所以不能直接使用 go test … 否則 $GOPATH 中的每個(gè)包也會(huì)被逐一測(cè)試,因此創(chuàng)建了一個(gè)用于標(biāo)準(zhǔn)庫(kù)中的包的別名:std。由于一些測(cè)試需要比較長(zhǎng)的時(shí)間,且會(huì)消耗大量?jī)?nèi)存,因此用 -short 標(biāo)志對(duì)一些測(cè)試進(jìn)行了過(guò)濾。

第七步. runtime 和 cgo 測(cè)試

run.bash 接下來(lái)的部分會(huì)運(yùn)行平臺(tái)對(duì) cgo 支持的測(cè)試,執(zhí)行一些性能測(cè)試,并且編譯一些伴隨 Go 發(fā)行版一起的雜項(xiàng)程序。隨著時(shí)間的流逝,這些雜項(xiàng)程序的清單會(huì)越來(lái)越長(zhǎng),那么它們也就會(huì)不可避免的被從編譯過(guò)程中悄悄剝離出去。

第八步. go run test

(xcd ../test

unset GOMAXPROCS

time go run run.go

) || exit $?

run.bash 的倒數(shù)第二步會(huì)調(diào)用在 $GOROOT 下的 test 目錄里的編譯器和運(yùn)行時(shí)的測(cè)試。他們是對(duì)于編譯器和運(yùn)行時(shí)自身的,較為低級(jí)細(xì)節(jié)的測(cè)試。會(huì)執(zhí)行語(yǔ)言規(guī)格測(cè)試,test/bugs 和 test/fixedbugs 子目錄保存有那些已經(jīng)被發(fā)現(xiàn)并被修復(fù)的問(wèn)題的獨(dú)立的測(cè)試。驅(qū)動(dòng)測(cè)試的是一個(gè)小 Go 程序 $GOROOT/test/run.go,會(huì)執(zhí)行 test 目錄里的每個(gè) .go 文件。一些 .go 文件的首行包含了指導(dǎo) run.go 對(duì)結(jié)果作出判斷的指令,例如,程序?qū)?huì)失敗,或提供一個(gè)確定的輸出隊(duì)列。

第九步. go tool api

echo '# Checking API compatibility.'

go tool api -c $GOROOT/api/go1.txt,$GOROOT/api/go1.1.txt \

-next $GOROOT/api/next.txt -except $GOROOT/api/except.txt

run.bash 的最后一步調(diào)用了 api 工具。

delve基礎(chǔ)用法及在vscode中的使用

delve 是go語(yǔ)言的調(diào)試器,delve的目標(biāo)是為go提供一個(gè)簡(jiǎn)潔、功能齊全的debug工具,delve易于調(diào)用和使用。

為了能夠編譯delve,需要安裝Go 1.10或更高版本

安裝好go后,直接go get即可安裝,更多安裝教程見(jiàn):

go get github.com/go-delve/delve/cmd/dlv

安裝好后,在終端執(zhí)行dlv或者dlv help 會(huì)看到dlv的幫助信息,則說(shuō)明安裝成功

dlv常用命令

delve的目標(biāo)是成為一個(gè)簡(jiǎn)潔而強(qiáng)大的工具。但如果你不習(xí)慣在編譯語(yǔ)言中使用源碼調(diào)試,則可能令人困惑。本文檔將提供開(kāi)始調(diào)試go程序所需的全部信息。

調(diào)試?yán)映绦蛉缦?/p>

├── go.mod

├── go.sum

├── main.go

├── test

└── utils

├── util.go

└── util_test.go

調(diào)試程序主要有三個(gè)文件,main.go、util.go、util_test.go,內(nèi)容如下,比較簡(jiǎn)單,go包管理工具使用的是go module,模塊名為test

在vscode debug 的設(shè)置中配置launch.json文件

mode 設(shè)置為debug時(shí),program的內(nèi)容${fileDirname}即可,mode 設(shè)置為exec時(shí),program的值為二進(jìn)制文件的路徑,通過(guò)設(shè)置mode的值,即可調(diào)試源碼和二進(jìn)制程序(也需要有源碼)。mode模式為auto時(shí),測(cè)試了下,vscode 并不能通過(guò)program的內(nèi)容來(lái)判斷是debug還是exec

遠(yuǎn)程調(diào)試時(shí),需要在遠(yuǎn)程也有源碼、二進(jìn)制包和dlv工具

在遠(yuǎn)端執(zhí)行dlv命令

dlv debug --headless --listen=:8989 --api-version=2 --accept-multiclient #用degbug方式啟動(dòng)遠(yuǎn)程應(yīng)用程序

dlv exec --headless --listen=:8989 ./test --api-version=2 --accept-multiclient # exec執(zhí)行當(dāng)前目錄下的test二進(jìn)制文件

--listen:指定調(diào)試端口

--api-version:指定api版本,默認(rèn)是1

--accept-multiclient:接受多個(gè)client調(diào)試

在vscode中線下好源碼,和遠(yuǎn)端的源碼結(jié)構(gòu)一致。launch.json配置如下:

在vscode中打好斷點(diǎn)后,就可以進(jìn)行遠(yuǎn)程調(diào)試了

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

1、學(xué)習(xí)曲線

它包含了類C語(yǔ)法、GC內(nèi)置和工程工具。這一點(diǎn)非常重要,因?yàn)镚o語(yǔ)言容易學(xué)習(xí),所以一個(gè)普通的大學(xué)生花一個(gè)星期就能寫出來(lái)可以上手的、高性能的應(yīng)用。在國(guó)內(nèi)大家都追求快,這也是為什么國(guó)內(nèi)Go流行的原因之一。

2、效率

Go擁有接近C的運(yùn)行效率和接近PHP的開(kāi)發(fā)效率,這就很有利的支撐了上面大家追求快速的需求。

3、出身名門、血統(tǒng)純正

之所以說(shuō)Go語(yǔ)言出身名門,是因?yàn)槲覀冎繥o語(yǔ)言出自Google公司,這個(gè)公司在業(yè)界的知名度和實(shí)力自然不用多說(shuō)。Google公司聚集了一批牛人,在各種編程語(yǔ)言稱雄爭(zhēng)霸的局面下推出新的編程語(yǔ)言,自然有它的戰(zhàn)略考慮。而且從Go語(yǔ)言的發(fā)展態(tài)勢(shì)來(lái)看,Google對(duì)它這個(gè)新的寵兒還是很看重的,Go自然有一個(gè)良好的發(fā)展前途。我們看看Go語(yǔ)言的主要?jiǎng)?chuàng)造者,血統(tǒng)純正這點(diǎn)就可見(jiàn)端倪了。

4、組合的思想、無(wú)侵入式的接口

Go語(yǔ)言可以說(shuō)是開(kāi)發(fā)效率和運(yùn)行效率二者的完美融合,天生的并發(fā)編程支持。Go語(yǔ)言支持當(dāng)前所有的編程范式,包括過(guò)程式編程、面向?qū)ο缶幊桃约昂瘮?shù)式編程。

5、強(qiáng)大的標(biāo)準(zhǔn)庫(kù)

這包括互聯(lián)網(wǎng)應(yīng)用、系統(tǒng)編程和網(wǎng)絡(luò)編程。Go里面的標(biāo)準(zhǔn)庫(kù)基本上已經(jīng)是非常穩(wěn)定,特別是我這里提到的三個(gè),網(wǎng)絡(luò)層、系統(tǒng)層的庫(kù)非常實(shí)用。

6、部署方便

我相信這一點(diǎn)是很多人選擇Go的最大理由,因?yàn)椴渴鹛奖?,所以現(xiàn)在也有很多人用Go開(kāi)發(fā)運(yùn)維程序。

7、簡(jiǎn)單的并發(fā)

它包含降低心智的并發(fā)和簡(jiǎn)易的數(shù)據(jù)同步,我覺(jué)得這是Go最大的特色。之所以寫正確的并發(fā)、容錯(cuò)和可擴(kuò)展的程序如此之難,是因?yàn)槲覀冇昧隋e(cuò)誤的工具和錯(cuò)誤的抽象,Go可以說(shuō)這一塊做的相當(dāng)簡(jiǎn)單。

8、穩(wěn)定性

Go擁有強(qiáng)大的編譯檢查、嚴(yán)格的編碼規(guī)范和完整的軟件生命周期工具,具有很強(qiáng)的穩(wěn)定性,穩(wěn)定壓倒一切。那么為什么Go相比于其他程序會(huì)更穩(wěn)定呢?這是因?yàn)镚o提供了軟件生命周期的各個(gè)環(huán)節(jié)的工具,如go

tool、gofmt、go test。

go語(yǔ)言 一個(gè)主package包引入同級(jí)目錄下go文件包編譯出錯(cuò)?。?/h2>

go語(yǔ)言 一個(gè)主package包引入同級(jí)目錄下go文件包編譯出錯(cuò)是設(shè)置錯(cuò)誤造成的,解決方法為:

1、先使用import "strings"導(dǎo)入strings庫(kù)。

2、HasPrefix?判斷字符串?s?是否以?prefix?開(kāi)頭。

3、HasSuffix?判斷字符串?s?是否以?suffix?結(jié)尾。

4、可以看看判斷的代碼。

5、在cmd下運(yùn)行一下go run test.go,看看如下結(jié)果。

6、Contains?判斷字符串?s?是否包含?substr,也就是判斷一下S是否在strings中。

7、在cmd下運(yùn)行g(shù)o run test.go看看結(jié)果。

windows 怎么編譯 go語(yǔ)言

1、解壓壓縮包到go工作目錄,如解壓到E:\opensource\go\go,解壓后的目錄結(jié)構(gòu)如下:

E:\opensource\go\go

├─api

├─bin

│ ├─go.exe

│ ├─godoc.exe

│ └─gofmt.exe

├─doc

├─include

├─lib

├─misc

├─pkg

├─src

└─test

2、增加環(huán)境變量GOROOT,取值為上面的go工作目錄

3、Path環(huán)境變量中添加";%GOROOT%\bin",以便能夠直接調(diào)用go命令來(lái)編譯go代碼,至此go編譯環(huán)境就配置好了

注:如果不想手動(dòng)設(shè)置系統(tǒng)環(huán)境變量,也可下載go啟動(dòng)環(huán)境批處理附件,

修改goenv.bat文件中的GOROOT值為上面的go工作目錄后直接雙擊該bat文件,go編譯環(huán)境變量即設(shè)置完成。

4、測(cè)試go編譯環(huán)境,啟動(dòng)一個(gè)cmd窗口,直接輸入go,看到下面的提示就是搭建成功了

E:\opensource\go\gogo

Go is a tool for managing Go source code.

Usage:

go command [arguments]

The commands are:

build compile packages and dependencies

clean remove object files

doc run godoc on package sources

env print Go environment information

fix run go tool fix on packages

fmt run gofmt on package sources

get download and install packages and dependencies

install compile and install packages and dependencies

list list packages

run compile and run Go program

test test packages

tool run specified go tool

version print Go version

vet run go tool vet on packages

Use "go help [command]" for more information about a command.

Additional help topics:

gopath GOPATH environment variable

packages description of package lists

remote remote import path syntax

testflag description of testing flags

testfunc description of testing functions

Use "go help [topic]" for more information about that topic.

5、編譯helloworld測(cè)試程序,go語(yǔ)言包中test目錄帶有helloworld.go測(cè)試程序,源碼見(jiàn)"附一 helloworld.go",

直接調(diào)用"go build helloworld.go"就生成了"helloworld.exe"可執(zhí)行程序,運(yùn)行一下這個(gè)程序看到了我們期望的hello,wolrd。

E:\opensource\go\go\testgo build helloworld.go

E:\opensource\go\go\testhelloworld.exe

hello, world

E:\opensource\go\go\test

附一 helloworld.go

// cmpout

// Copyright 2009 The Go Authors. All rights reserved.

// Use of this source code is governed by a BSD-style

// license that can be found in the LICENSE file.

// Test that we can do page 1 of the C book.

package main

func main() {

print("hello, world\n")

}


新聞名稱:go語(yǔ)言test能調(diào)試的簡(jiǎn)單介紹
文章路徑:http://www.dlmjj.cn/article/docjpii.html