案例场景:创建一个两层目录,并在该目录下创建一个文件,将“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两种环境的可执行文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)