1、工作区

go代码必须放在工作区中;它应包含3个子目录:src、pkg、bin。

src:用于以代码包的形式组织并保存go源码文件
pkg:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。
bin:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件

src必须存在,pkg和bin无需手动创建

2、GOPATH

(1)为了能够构建工程,需要先把所需工程的根目录加入到环境变量GOPATH中。go build,go install,go get 等命令执行时会从 GOPATH 目录下的 src 去查找源码
(2)通过 go env 查看GOPATH的值

3、导入包的方式

(1)improt . "fmt" 调用包的函数时,可以省略包名 fmt.Println("hello") = Println("hello")
(2)improt in "os" 起别名
(3)improt _ "math" 忽略包,不是为了使用包里面的函数,是为了调用它的 init 函数

package main

import (
    // 1、调用包的函数时,可以省略包名 fmt.Println("hello") = Println("hello")
    . "fmt"

    // 2、起别名
    in "os"

    // 3、忽略包
    _ "math"
)

func main() {
    Println("hello")
    Println("in : ", in.Args)
}

4、工程目录

(1)同一个目录包名必须一样

// D:/workplace/go_place/src/main.go文件
package main

import (
    "fmt"
)

func main() {
    fmt.Println("main")
}


// D:/workplace/go_place/src/test.go文件
package test

import (
    "fmt"
)

func goTest() {
    fmt.Println("goTest")
}

通过 control + R 编译并运行,控制台出现如下打印:

found packages main (main.go) and test (test.go) in D:\workplace\go_place\src
错误: 进程退出代码 1.

在D:\workplace\go_place\src找到了多个package;将test.go的package修改为main后,运行成功。

(2)同一个目录调用别的文件的函数,直接调用,不需要包名

package main

import (
    "fmt"
)

func main() {
    fmt.Println("main")
    goTest()
}

(3)包的函数要想开放给别人,函数首字母要大写

package calc

import (
    "fmt"
)

func CalcTest() {
    fmt.Println("calc")
}

(4)import之后,会调用包的init函数

5、go run、build、install、get 的区别
库源码文件:不会产生文件, 只是测试编译包是否有问题命令源码文件:在当前执行 go build 命令的目录下产生可执行文件库源码文件:直接编译链接整个包, 在pkg目录下生成.a静态文件, 供其他包调用命令源码文件:编译+链接+生成可执行文件, 在bin目录下生成可执行文件