1. 程式人生 > >GOPATH和GOROOT

GOPATH和GOROOT

rom main ubun 包含 println 執行文件 pat ola 目錄

環境變量

  • GOROOT golang安裝路徑 包含golang源碼和它們的二進制文件
  • GOPATH 工作目錄

查看安裝之後的環境變量

root@ubuntu:~# go env
GOPATH=""
GOROOT="/usr/lib/go-1.6"

設置環境變量

mkdir -p /home/Projects/Go  //創建工作目錄

vim ~/.bashrc               //編輯此文件 並添加如下代碼

GOPATH=/Home/Projects/Go
export GOPATH
PATH=$PATH:$GOPATH/bin # Add GOPATH/bin to PATH for scripting

source ~/.bashrc            //生效配置

再次查看環境變量

root@ubuntu:~# go env
GOPATH="/Home/Projects/Go"
GOROOT="/usr/lib/go-1.6"

創建自己的應用包

mkdir -p $GOPATH/src/Hello //創建文件夾
cd $GOPATH/src/Hello    //進入到目錄
vim Hello.go            //創建hello文件

package Hello
import "fmt"
func Say(){
    fmt.Println("hello world")
}
  • 這裏需要大寫

編譯應用

編譯之前的目錄

root@ubuntu:/Home/Projects/Go# tree
.
└── src
    └── Hello
        └── Hello.go

編譯一個不存在的包

root@ubuntu:/Home/Projects/Go# go install test
can‘t load package: package test: cannot find package "test" in any of:
    /usr/lib/go-1.6/src/test (from $GOROOT)
    /Home/Projects/Go/src/test (from $GOPATH)
  • 這裏可以看到默認會從GOROOT和GOPATH 找相對應的包

編譯

go build Hello

查看編譯後的目錄

root@ubuntu:/Home/Projects# tree
.
└── Go
    ├── pkg
    │   └── linux_amd64
    │       └── Hello.a
    └── src
        └── Hello
            └── Hello.go

5 directories, 2 files
  • 這裏可以看到有一個pkg目錄,下面有一個hello.a文件

創建主文件並引用剛才創建的包文件

mkdir main
vim main.go

package main

import "Hello"

func main(){
   Hello.Say(); 
}

編譯程序並查看

go build

root@ubuntu:/Home/Projects/Go# tree
.
├── pkg
│   └── linux_amd64
│       └── Hello.a
└── src
    ├── Hello
    │   └── Hello.go
    └── main
        ├── main
        └── main.go   
        
  • 這裏多了一個main文件夾就是可執行文件

執行可執行文件

root@ubuntu:/Home/Projects/Go/src/main# ./main 
hello world

安裝應用並查看

root@ubuntu:/Home/Projects/Go/src/main# go install

root@ubuntu:/Home/Projects/Go# tree
.
├── bin
│   └── main
├── pkg
│   └── linux_amd64
│       └── Hello.a
└── src
    ├── Hello
    │   └── Hello.go
    └── main
        └── main.go
  • 可以看到 多了一個bin目錄 且目錄下面有一個main文件

執行應用

root@ubuntu:/# main
hello world

GOPATH和GOROOT