go語言編程如何導(dǎo)入路徑,go 文件路徑

Go語言中如何設(shè)置包的查找路徑

二進(jìn)制包安裝的話:如果安裝在了默認(rèn)位置例如/usr/local/go (Windows系統(tǒng):c:\Go)這個(gè)時(shí)候可以不需要設(shè)置GOROOT,如果改變了安裝的這個(gè)默認(rèn)目錄,那么就需要設(shè)置GOROOTGOROOT的概念有點(diǎn)Go安裝目錄的意思GOPATH是一個(gè)開發(fā)環(huán)境目錄的意思,下面必須包含bin、pkg、src,然后再src下面新建項(xiàng)目就可以了你在沒有設(shè)置GOPATH的情況下,也可以把項(xiàng)目建在GOROOT/src下面,其實(shí)和GOPATH的概念類似

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、科爾沁左翼網(wǎng)站維護(hù)、網(wǎng)站推廣。

GO語言(三十):訪問關(guān)系型數(shù)據(jù)庫(上)

本教程介紹了使用 Godatabase/sql及其標(biāo)準(zhǔn)庫中的包訪問關(guān)系數(shù)據(jù)庫的基礎(chǔ)知識。

您將使用的database/sql包包括用于連接數(shù)據(jù)庫、執(zhí)行事務(wù)、取消正在進(jìn)行的操作等的類型和函數(shù)。

在本教程中,您將創(chuàng)建一個(gè)數(shù)據(jù)庫,然后編寫代碼來訪問該數(shù)據(jù)庫。您的示例項(xiàng)目將是有關(guān)老式爵士樂唱片的數(shù)據(jù)存儲庫。

首先,為您要編寫的代碼創(chuàng)建一個(gè)文件夾。

1、打開命令提示符并切換到您的主目錄。

在 Linux 或 Mac 上:

在 Windows 上:

2、在命令提示符下,為您的代碼創(chuàng)建一個(gè)名為 data-access 的目錄。

3、創(chuàng)建一個(gè)模塊,您可以在其中管理將在本教程中添加的依賴項(xiàng)。

運(yùn)行g(shù)o mod init命令,為其提供新代碼的模塊路徑。

此命令創(chuàng)建一個(gè) go.mod 文件,您添加的依賴項(xiàng)將在其中列出以供跟蹤。

注意: 在實(shí)際開發(fā)中,您會指定一個(gè)更符合您自己需求的模塊路徑。有關(guān)更多信息,請參閱一下文章。

GO語言(二十五):管理依賴項(xiàng)(上)

GO語言(二十六):管理依賴項(xiàng)(中)

GO語言(二十七):管理依賴項(xiàng)(下)

接下來,您將創(chuàng)建一個(gè)數(shù)據(jù)庫。

在此步驟中,您將創(chuàng)建要使用的數(shù)據(jù)庫。您將使用 DBMS 本身的 CLI 創(chuàng)建數(shù)據(jù)庫和表,以及添加數(shù)據(jù)。

您將創(chuàng)建一個(gè)數(shù)據(jù)庫,其中包含有關(guān)黑膠唱片上的老式爵士樂錄音的數(shù)據(jù)。

這里的代碼使用MySQL CLI,但大多數(shù) DBMS 都有自己的 CLI,具有類似的功能。

1、打開一個(gè)新的命令提示符。

在命令行,登錄到您的 DBMS,如下面的 MySQL 示例所示。

2、在mysql命令提示符下,創(chuàng)建一個(gè)數(shù)據(jù)庫。

3、切到您剛剛創(chuàng)建的數(shù)據(jù)庫,以便您可以添加表。

4、在文本編輯器的 data-access 文件夾中,創(chuàng)建一個(gè)名為 create-tables.sql 的文件來保存用于添加表的 SQL 腳本。

將以下 SQL 代碼粘貼到文件中,然后保存文件。

在此 SQL 代碼中:

(1)刪除名為album表。 首先執(zhí)行此命令可以讓您更輕松地稍后重新運(yùn)行腳本。

(2)創(chuàng)建一個(gè)album包含四列的表:title、artist和price。每行的id值由 DBMS 自動創(chuàng)建。

(3)添加帶有值的四行。

5、在mysql命令提示符下,運(yùn)行您剛剛創(chuàng)建的腳本。

您將使用以下形式的source命令:

6、在 DBMS 命令提示符處,使用SELECT語句來驗(yàn)證您是否已成功創(chuàng)建包含數(shù)據(jù)的表。

接下來,您將編寫一些 Go 代碼進(jìn)行連接,以便進(jìn)行查詢。

現(xiàn)在你已經(jīng)有了一個(gè)包含一些數(shù)據(jù)的數(shù)據(jù)庫,開始你的 Go 代碼。

找到并導(dǎo)入一個(gè)數(shù)據(jù)庫驅(qū)動程序,該驅(qū)動程序會將您通過database/sql包中的函數(shù)發(fā)出的請求轉(zhuǎn)換為數(shù)據(jù)庫可以理解的請求。

1、在您的瀏覽器中,訪問SQLDrivers wiki 頁面以識別您可以使用的驅(qū)動程序。

2、使用頁面上的列表來識別您將使用的驅(qū)動程序。為了在本教程中訪問 MySQL,您將使用 Go-MySQL-Driver。

3、請注意驅(qū)動程序的包名稱 - 此處為github.com/go-sql-driver/mysql.

4、使用您的文本編輯器,創(chuàng)建一個(gè)用于編寫 Go 代碼的文件,并將該文件作為 main.go 保存在您之前創(chuàng)建的數(shù)據(jù)訪問目錄中。

5、進(jìn)入main.go,粘貼以下代碼導(dǎo)入驅(qū)動包。

在此代碼中:

(1)將您的代碼添加到main包中,以便您可以獨(dú)立執(zhí)行它。

(2)導(dǎo)入 MySQL 驅(qū)動程序github.com/go-sql-driver/mysql。

導(dǎo)入驅(qū)動程序后,您將開始編寫代碼以訪問數(shù)據(jù)庫。

現(xiàn)在編寫一些 Go 代碼,讓您使用數(shù)據(jù)庫句柄訪問數(shù)據(jù)庫。

您將使用指向結(jié)構(gòu)的指針sql.DB,它表示對特定數(shù)據(jù)庫的訪問。

編寫代碼

1、進(jìn)入 main.go,在import您剛剛添加的代碼下方,粘貼以下 Go 代碼以創(chuàng)建數(shù)據(jù)庫句柄。

在此代碼中:

(3)使用 MySQL 驅(qū)動程序Config和FormatDSN類型以收集連接屬性并將它們格式化為連接字符串的 DSN。

該Config結(jié)構(gòu)使代碼比連接字符串更容易閱讀。

(4)調(diào)用sql.Open 初始化db變量,傳遞 FormatDSN。

(5)檢查來自 的錯(cuò)誤sql.Open。例如,如果您的數(shù)據(jù)庫連接細(xì)節(jié)格式不正確,它可能會失敗。

為了簡化代碼,您調(diào)用log.Fatal結(jié)束執(zhí)行并將錯(cuò)誤打印到控制臺。在生產(chǎn)代碼中,您會希望以更優(yōu)雅的方式處理錯(cuò)誤。

(6)調(diào)用DB.Ping以確認(rèn)連接到數(shù)據(jù)庫有效。在運(yùn)行時(shí), sql.Open可能不會立即連接,具體取決于驅(qū)動程序。您在Ping此處使用以確認(rèn) database/sql包可以在需要時(shí)連接。

(7)檢查來自Ping的錯(cuò)誤,以防連接失敗。

(8)Ping如果連接成功,則打印一條消息。

文件的頂部現(xiàn)在應(yīng)該如下所示:

3、保存 main.go。

1、開始跟蹤 MySQL 驅(qū)動程序模塊作為依賴項(xiàng)。

使用go get 添加 github.com/go-sql-driver/mysql 模塊作為您自己模塊的依賴項(xiàng)。使用點(diǎn)參數(shù)表示“獲取當(dāng)前目錄中代碼的依賴項(xiàng)”。

2、在命令提示符下,設(shè)置Go 程序使用的DBUSER和DBPASS環(huán)境變量。

在 Linux 或 Mac 上:

在 Windows 上:

3、在包含 main.go 的目錄中的命令行中,通過鍵入go run來運(yùn)行代碼。

連接成功了!

接下來,您將查詢一些數(shù)據(jù)。

關(guān)于在go語言中導(dǎo)入當(dāng)前文件夾的步驟

1.先把要導(dǎo)入的包go build - go install

2.接著在要導(dǎo)入的方法中以: 項(xiàng)目名 / 導(dǎo)入的文件名 ?的形式導(dǎo)入即可(如下方test(項(xiàng)目名) / chiid(文件名))

go語言能只導(dǎo)入一個(gè)方法嗎

能。GO語言中每個(gè)包在項(xiàng)目中都有一個(gè)唯一的導(dǎo)入路徑,只能打入一個(gè),這個(gè)導(dǎo)入路徑是使用唯一的字符串進(jìn)行標(biāo)識的。

linux下怎么安裝Go開發(fā)環(huán)境

一、Go安裝使用

1、下載Go源碼包

上傳到/usr/local/src目錄下

2、編譯安裝Go到/usr/local

tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/

#注:必須使用root賬戶或者使用sudo來解壓縮Go源碼包

3、設(shè)置PATH環(huán)境變量,添加/usr/local/go/bin到環(huán)境變量

export PATH=$PATH:/usr/local/go/bin

4、安裝到自定義位置

Go二進(jìn)制文件默認(rèn)安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設(shè)置正確的環(huán)境變量。

例如,安裝Go到家目錄下,必須添加環(huán)境變量到$HOME/.profile

export GOROOT=$HOME/go

export PATH=$PATH:$GOROOT/bin

注:安裝Go到其他目錄時(shí),GOROOT必須設(shè)置為環(huán)境變量

5、檢查是否正確安裝程序

通過設(shè)置一個(gè)工作區(qū)和建立一個(gè)簡單的程序,檢查是否正確安裝了一個(gè)簡單的程序。創(chuàng)建一個(gè)目錄包含您的工作空間,例如/data/work,并設(shè)置GOPATH環(huán)境變量指向的位置。

export GOPATH=/data/work

#如果不存在/data/work,需要新建

然后,在你的工作內(nèi)創(chuàng)建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go

# cat hello.go

package main

import "fmt"

func main {

fmt.Printf("hello,world!\n")

}

#使用go編譯hello.go

go install github.com/user/hello

#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區(qū)內(nèi),執(zhí)行下面命令,會得到輸出結(jié)果。

$GOPATH/bin/hello

hello,world!

#當(dāng)出現(xiàn)hello,world!表明Go已經(jīng)安裝成功可以工作。

二、Go工作區(qū)介紹

1、機(jī)構(gòu)組織代碼概述

Go語言程序通常將所有的代碼保存在一個(gè)工作區(qū)中。

工作區(qū)包含許多版本控制庫(由Git管理)。

每個(gè)存儲庫包含一個(gè)或多個(gè)包。

每個(gè)包由一個(gè)或多個(gè)在一個(gè)目錄中的源文件組成。

一個(gè)包的目錄的路徑?jīng)Q定其導(dǎo)入路徑。

注:同于其他的編程環(huán)境中,每一個(gè)項(xiàng)目都有一個(gè)獨(dú)立的工作區(qū)且工作區(qū)是緊密聯(lián)系在一起的版本控制庫。

2、工作區(qū)介紹

工作區(qū)是一個(gè)目錄層次結(jié)構(gòu),它的根目錄有三個(gè)目錄:

src 包含Go源文件

pkg 包含對象和包

bin 包含可執(zhí)行命令

Go工具創(chuàng)建源碼包并安裝二進(jìn)制文件到pkg和bin目錄下

src目錄通常包含多個(gè)版本控制庫(如Git或Mercurial),跟蹤一個(gè)或多個(gè)源包的開發(fā)。

下面展示一個(gè)好的工作區(qū)的例子:

bin/

hello # command executable

outyet # command executable

pkg/

linux_amd64/

github.com/golang/example/

stringutil.a # package object

src/

github.com/golang/example/

.git/ # Git repository metadata

hello/

hello.go # command source

outyet/

main.go # command source

main_test.go # test source

stringutil/

reverse.go # package source

reverse_test.go # test source

golang.org/x/image/

.git/ # Git repository metadata

bmp/

reader.go # package source

writer.go # package source

... (many more repositories and packages omitted) ...

上面的屬性圖展示了一個(gè)包含兩個(gè)存儲庫(example和image)的工作區(qū),example 存儲庫包含兩個(gè)命令(hello,outyet),image庫包含bmp包和幾個(gè)其他的包。

一個(gè)典型的工作區(qū)包含包含許多軟件包和命令的多個(gè)源庫。大多數(shù)程序員將所有的源代碼和依賴關(guān)系保存在一個(gè)工作區(qū)中

3、GOPATH環(huán)境變量設(shè)置

GOPATH環(huán)境變量指定工作區(qū)的位置。它很可能是唯一的環(huán)境變量,代碼開發(fā)時(shí)需要設(shè)置。

開始,創(chuàng)建一個(gè)工作區(qū)目錄并設(shè)置相應(yīng)的gopath。您的工作區(qū)可以位于任何你喜歡的地方,但我們將在這個(gè)文檔中使用/data/work。請注意,這不能是您的“Go安裝”路徑相同。

mkdir -p /data/work

export GOPATH=/data/work

為了方便。添加工作區(qū)的bin到PATH中

export PATH=$PATH:$GOPATH/bin

4、導(dǎo)入路徑

一個(gè)導(dǎo)入路徑是唯一標(biāo)識一個(gè)包的字符串。一個(gè)包的導(dǎo)入路徑對應(yīng)于它在工作區(qū)內(nèi)或遠(yuǎn)程存儲庫中的位置。

從標(biāo)準(zhǔn)庫的軟件包中給出了短的導(dǎo)入路徑等。對于您自己的包,您必須選擇不可能和未來添加到標(biāo)準(zhǔn)庫或其他外部庫的基礎(chǔ)路徑?jīng)_突的路徑。

注意,你不需要將你的代碼發(fā)布到一個(gè)遠(yuǎn)程存儲庫之前,你可以建立它。這只是一個(gè)很好的習(xí)慣來組織你的代碼,如果你有一天會出版它。在實(shí)踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標(biāo)準(zhǔn)庫和更大的去生態(tài)系統(tǒng)。

我們將使用github.com/user作為我們的基本路徑。在您的工作區(qū)中創(chuàng)建一個(gè)目錄,以保持源代碼:

mkdir -p $GOPATH/src/github.com/user

5、第一個(gè)項(xiàng)目

編譯并運(yùn)行一個(gè)簡單的程序,首先選擇一個(gè)包的路徑(我們將使用github.com/user/hello)和創(chuàng)建在您的工作區(qū)相應(yīng)的軟件包目錄:

mkdir $GOPATH/src/github.com/user/hello

創(chuàng)建名叫hello.go的文件,上面創(chuàng)建過,此處略過。

cd $GOPATH/src/github.com/user/hello

go install

$GOPATH/bin/hello

或者:

hello

如果你使用的是一個(gè)源代碼管理系統(tǒng),現(xiàn)在是一個(gè)很好的時(shí)間來初始化一個(gè)存儲庫,添加文件,并提交你的第一次更改。再次,這一步是可選的:您不需要使用源代碼管理來寫代碼。

cd $GOPATH/src/github.com/user/hello

git init

Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/

git add hello.go

git commit -m "first commit"

[master (root-commit) bbfb477] first commit

6、first library

mkdir $GOPATH/src/github.com/user/stringutil

下一步,在目錄下創(chuàng)建一個(gè)名為reverse.go文件中有下列內(nèi)容:

// Package stringutil contains utility functions for working with strings.

package stringutil

// Reverse returns its argument string reversed rune-wise left to right.

func Reverse(s string) string {

r := []rune(s)

for i, j := 0, len(r)-1; i len(r)/2; i, j = i+1, j-1 {

r[i], r[j] = r[j], r[i]

}

return string(r)

}

使用go build測試包的編譯

$ go build github.com/user/stringutil

如果當(dāng)前位置源碼包目錄,只需要:

go build

上面操作并不會產(chǎn)生一個(gè)輸出文件,必須使用go install,把包和對象輸出到工作去的pkg目錄內(nèi)

確認(rèn)stringutil包創(chuàng)建完成后,修改原始hello.go,使用stringutil包:

package main

import (

"fmt"

"github.com/user/stringutil"

)

func main() {

fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))

}

無論使用go安裝包還是二進(jìn)制文件,所有相關(guān)的依賴都會自動安裝。所以當(dāng)你安裝hello程序時(shí):

$ go install github.com/user/hello

對應(yīng)的stringutil包會自動安裝好。

執(zhí)行新的hello程序,可以看到消息已經(jīng)被反轉(zhuǎn)

# hello

Hello, Go!

完成上面操作之后,工作區(qū)應(yīng)該為:

├── bin

│ └── hello # command executable

├── pkg

│ └── linux_amd64 # this will reflect your OS and architecture

│ └── github.com

│ └── user

│ └── stringutil.a # package object

└── src

└── github.com

└── user

├── hello

│ └── hello.go # command source

└── stringutil

└── reverse.go # package source

注意:go install會把庫文件stringutil.a放到pkg/linux_amd64下邊(目錄結(jié)構(gòu)跟源代碼結(jié)構(gòu)一樣)。這樣可以go命令可以直接找到對應(yīng)的包對象,避免不必要的重復(fù)編譯。linux_amd64是為了根據(jù)操作系統(tǒng)和你的系統(tǒng)架構(gòu)交叉編譯。

所有Go可執(zhí)行程序都通過靜態(tài)方式鏈接在一起,所以在運(yùn)行時(shí)是不需要相關(guān)的包對象(庫)。

7、包命令

所有的Go源代碼都以下面的語句開始:

package name

其中name就是包引用默認(rèn)的名稱,一個(gè)包中的所有文件必須使用同一個(gè)包名,可執(zhí)行命令必須是main。

一個(gè)二進(jìn)制文件下所有的包名不需要唯一,但是引用路徑必須唯一

8、測試

Go自帶了一個(gè)輕量級的測試框架,由go test和testing包組成。

可以通過新建xx_test.go寫一個(gè)測試,其中包含若干個(gè)TestXXX函數(shù)。測試框架會自動執(zhí)行這些函數(shù);如果函數(shù)中包含tError或t.Fail, 對應(yīng)的測試會被判為失敗。

添加一個(gè)針對stringutil的測試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內(nèi)容:

package stringutil

import "testing"

func TestReverse(t *testing.T) {

cases := []struct {

in, want string

}{

{"Hello, world", "dlrow ,olleH"},

{"Hello, 世界", "界世,olleH"},

{"", ""},

}

for _, c := range cases {

got := Reverse(c.in)

if got != c.want {

t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)

}

}

}

#通過go test測試

# go test github.com/user/stringutil

ok github.com/user/stringutil 0.002s

#同樣的,在包文件夾下可以忽略路徑而直接執(zhí)行g(shù)o test

[root@zabbix stringutil]# go test

PASS

ok github.com/user/stringutil 0.002s

9、遠(yuǎn)程包

包的引用路徑用來描述如何通過版本控制系統(tǒng)獲取包的源代碼。go工具通過引用路徑自動從遠(yuǎn)程代碼倉庫獲取包文件。比如本文中用的例子也對應(yīng)的保存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接獲取、生成、安裝對應(yīng)的包。

[root@zabbix ~]# go get github.com/golang/example/hello

[root@zabbix ~]# $GOPATH/bin/hello

Hello, Go examples!

如果工作區(qū)中不存在對應(yīng)的包,go會將對應(yīng)的包放到GOPATH環(huán)境變量指明的工作區(qū)下。(如果包已經(jīng)存在,go跳過代碼拉去而直接執(zhí)行g(shù)o install)

建議詳細(xì)看一下這個(gè),有圖文

分享名稱:go語言編程如何導(dǎo)入路徑,go 文件路徑
本文網(wǎng)址:http://muchs.cn/article34/hcgcpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、定制開發(fā)、動態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃網(wǎng)站設(shè)計(jì)

廣告

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

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)