一些常用的命令

拉取依赖

go get ...

在win环境中编译linux可执行程序

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
Go build ...

Code

抛出异常&异常捕获

// 抛出异常
panic("文件路径有误!")

// 异常捕获
defer ErrorHandle()

func ErrorHandle() {
	if r := recover(); r != nil {
	     // 对报错进行处理,r -> 报错信息
	}
}

MD5

func GenMd5(str1, str2 string) string {
	str := str1 + str2 + hashStr
	h := md5.New()
	h.Write([]byte(str))
	return hex.EncodeToString(h.Sum(nil))
}

Url转Byte数组

func UrlToByte(url string) []byte {
	resp, _ := http.Get(url)
	body, _ := ioutil.ReadAll(resp.Body)
	return body
}

Go操作文件

// 读取
func LoadConfig() []byte {
	var rootPath, _ = filepath.Abs(path.Dir(os.Args[0]))
	path := rootPath + "/conf.yml"
	file, err := os.Open(path)
	if err != nil {
		panic("文件未找到!")
	}
	defer file.Close()
        // fileContent -> 文件内容 (byte[])
	fileContent, _ := ioutil.ReadAll(file)
	return fileContent
}

// 写入
func SaveFile(url, content string){
	file, err := os.OpenFile(url, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0777)
	if err != nil {
		panic("文件路径有误!")
	}
	defer file.Close()
	_, err = file.Write([]byte(content))
	if err != nil {
		panic("保存文件失败...")
	}
}

// 删除
func RemoveFile(url string){
	os.Remove(url)
}

// 创建
func CreateFile(url, content string){
	file, err := os.Create(url)
	if err != nil {
		panic("操作失败!")
	}
	file.Close()
	// 创建成功之后保存
	msg = SaveFile(url, content)
}

Go的一些特性

(和java相比

  • 单一方法可以返回多个值,解决了Java返回集合的痛点
  • 可以直接编译成linux/win的可执行程序,不需要装环境

Java的部署方式一般都是打包成.jar文件,所以需要在服务器上先配置好运行环境

  • 依赖导入在我看来,看似比Java麻烦,实则更加方便

然后则是命名这里的坑,Java一般都是类名首字母大写,方法名首字母小写,Go中方法名小写则会找不到


Ex - ploooosion!