案例场景:创建一个两层目录,并在该目录下创建一个文件,将“Hello World”字符写入该文件,并读取出来。
目标:(1)测试案例是否能执行成功;(2)编译代码成windows与linux两种环境下的可执行文件。
测试代码文件名为main.go,内容如下:
package main import ( "fmt" "io/ioutil" "os" ) func main() { // 文件夹名 _dir := "data/test" exist, err := pathExists(_dir) if err != nil { fmt.Printf("get dir error![%v]\n", err) return } if exist { fmt.Printf("has dir![%v]\n", _dir) } else { fmt.Printf("no dir![%v]\n", _dir) // 创建文件夹 //err := os.Mkdir(_dir, os.ModePerm) err := os.MkdirAll(_dir, 0666) if err != nil { fmt.Printf("mkdir failed![%v]\n", err) } else { fmt.Printf("mkdir success!\n") fileName := _dir + "/test.txt" // 创建文件 os.Create(fileName) // 打开文件 file, _ := os.OpenFile(fileName, os.O_WRONLY|os.O_APPEND, 0666) // 当执行完,关闭文件 defer file.Close() // 写内容到文件中 file.WriteString("Hello World!") //读取文件 data, _ := ioutil.ReadFile(fileName) // 打印内容 fmt.Println(string(data)) } } } func pathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err }
经过调试,上述代码可正常执行。测试通过。
编译成windows环境exe可执行文件过程,打开文件所在目录,在资源路径框中输入cmd,打开cmd命令框,通过“go env”查看当期环境变量,以windows10环境为例,默认为windows环境。
// 配置环境变量 SET CGO_ENABLED=1 SET GOOS=windows SET GOARCH=amd64 // 编译命令 go build main.go
编译出来后就是一个可执行文件main.exe,可用鼠标双击直接执行,传到其他电脑上操作,依然可执行,不依赖第三方包(不像Java会依赖JDK)。
执行后,在main.exe所在目录下,生成一个data/test/test.txt,并且打开test.txt文件可看到Hello World。
编译成Linux环境可执行文件,此处除编译环境参数外,其他步骤与上面类似,编译参数如下
// 配置参数 SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 // 编译命令 go build main.go
编译输出的可执行文件名为main,上传至centos7.x系统,使用 “chmod +x main”添加可执行权限,执行 ” ./main “,输出结果与上述windows结果一样。
备注:上述编译环境所在的操作系统均为Windows10,即在windows10上开发代码,编译输出windows与linux两种环境的可执行文件。