使用go命令可以定位到文件頭和文件末
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)成武免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
當(dāng)go run 運行時會將文件轉(zhuǎn)移到臨時路徑下,然后再進行編譯和執(zhí)行,分片0就是C:\Users\xxx\AppData\Local\Temp___go_build_main_go.exe;
go build編譯執(zhí)行時,那么分片0為執(zhí)行文件的相對路徑為(main.go)
fmt.Println(os.Args)
//output:[C:\Users\xxx\AppData\Local\Temp\___go_build_main_go.exe]
1
2
1
2
exec.LookPath()
根據(jù)傳入的參數(shù)來從PATH中獲取可執(zhí)行文件的絕對路徑(沒有編譯的)或者相對路徑(編譯后的);參數(shù)若帶分割號就直接查詢返回
func LookPath(file string) (string, error)
LookPath searches for an executable named file in the directories named by the
PATH environment variable. If file contains a slash, it is tried directly and the
PATH is not consulted. LookPath also uses PATHEXT environment variable to match a
suitable candidate. The result may be an absolute path or a path relative to the
current directory.
1
2
3
4
5
6
7
1
2
3
4
5
6
7
filepath.Abs()
根據(jù)傳入的路徑計算出絕對路徑,如果傳入的為相對路徑,那么它會把當(dāng)前路徑拼接上
編譯后返回的是真實的路徑(D:\go_project\src\github.com\wzbwzt\studyGo\GetPath\main.exe)
未編譯執(zhí)行返回的是臨時執(zhí)行路徑
(C:\Users\xxx\AppData\Local\Temp___go_build_main_go.exe)
是手機GO瀏覽器緩存gotmp文件夾。其中GO是GO瀏覽器,TMP是臨時文件的意思。
二進制包安裝的話:如果安裝在了默認(rèn)位置例如/usr/local/go (Windows系統(tǒng):c:\Go)這個時候可以不需要設(shè)置GOROOT,如果改變了安裝的這個默認(rèn)目錄,那么就需要設(shè)置GOROOTGOROOT的概念有點Go安裝目錄的意思GOPATH是一個開發(fā)環(huán)境目錄的意思,下面必須包含bin、pkg、src,然后再src下面新建項目就可以了你在沒有設(shè)置GOPATH的情況下,也可以把項目建在GOROOT/src下面,其實和GOPATH的概念類似
這個方法獲取的是執(zhí)行文件的目錄,如果執(zhí)行文件demo 是在/home/golang文件夾下面
我們在/目錄執(zhí)行
./home/golang/demo 這樣輸出的os.Getwd()不會是/home/golang,而是/
pwd,_:=filepath.Abs(filepath.Dir(os.Args[0]))
使用這個,獲取到的目錄是/home/golang
如果是在本地開發(fā)調(diào)試,這兩個方法獲取的到路徑是一樣的,因為我們就在自己的項目目錄做調(diào)試,
但是如果構(gòu)建后當(dāng)做程序運行, 這兩個表現(xiàn)的效果是有區(qū)別的 ,
在讀取配置文件,打印log等需要獲取目錄的地方,需要根據(jù)實際情況選擇使用的方法,一般來說用
filepath.Abs(filepath.Dir(os.Args[0]))的地方會多一點,因為這個是一個固定的目錄,而os.Getwd(),會因為我們執(zhí)行命令的目錄不一樣而不一樣。
os.Args[0]是執(zhí)行文件路徑,在調(diào)試的時候,是一個臨時目錄
os.Args[1,2,3,4...]后面就是我們自己接的參數(shù)了
比如
go run main.go single lvhuxu
os.Args[1] = single
os.Args[2] = lvhuxu