目录


 

打包exe

下载golang安装包,msi文件简单安装

如果用于开发建议低版本,不超过go 1.17.8版本,避开高版本和IDE“Go SDK不是有效主路经”

go语言下载包配置国内镜像指令

go env -w GO111MODULE=on

go env -w GOPROXY=https://goproxy.io,direct

Windows打包

go build main.go,生成本地exe文件

编译Windows  64位可执行程序:

# X86

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=windows GOARCH=arm64 go build main.go
cd e:\Users\cing\SourceCode\MyProject\GenToken
go build main.go
#举例:go语言写的一个授权工具需要转为Windows可执行程序,执行后编译本地生成main.exe重命名为GenToken.exe即可

Linux打包

编译 Linux 64位可执行程序:

# X86

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build main.go

Mac打包

编译 MacOS 64位可执行程序

# X86

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go

# ARM

CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build main.go

BTW补充

Windows 下编译 Mac 64位可执行程序

SET CGO_ENABLED=0

SET GOOS=darwin

SET GOARCH=amd64

go build main.go

Windows 下编译Linux arm64位可执行程序

SET CGO_ENABLED=0

SET GOOS=linux

SET GOARCH=arm64

go build main.go

赋值

局部变量初始化类型赋值 与 常规赋值 golang中 = 和 :=区别

:= 给某变量的第一次赋值,初始化

= 变量的非第一次赋值

== 等于操作符


工程示例-文件解压

将在E:\ziptest\test.7z通过Bandizip自动静默解压到E:\ziptest\test

Bandizip需要预先手动安装

package main

import (
    "fmt"
    "os/exec"
    
    )
 
func main( ) {

    fmt.Printf("Run mycmd!")

    unzipfile := `E:\ziptest\test.7z`
    mycmd := exec.Command("Bandizip.exe", "x","-y","-target:auto",unzipfile)
    fmt.Println(fmt.Sprintf(`/c %s`, unzipfile)) 

    if err := mycmd.Run(); err != nil {
        fmt.Println("Error: ", err)
    }
}

其它go源码解压推荐go-unarr


工程示例-文字信息转发钉钉机器人(模块)
import (
   "fmt"
   "net/http"
   "strings"
   "strconv"
)

func main() {
toDintalk(tk)
}

func toDintalk(token string) {
   //From Here Edited By cy202212
   var site string = `https://oapi.dingtalk.com/robot/send?access_token=f5eexxxxxxxxxxxxxxxxxxxxxxxxxxc184fd98c`
   var  text_content0 string = `{"msgtype": "text", 
    "text": {
        "content":"`+"生成新的Token:\n"+ token  +"\n有效期:"+ strconv.Itoa(day) +"天"+ strconv.Itoa(hour) +"小时"+ strconv.Itoa(min) + "分钟"+`"
     }
}`


   client := &http.Client{}
   req, err := http.NewRequest("POST", site, strings.NewReader(text_content0))
   if err != nil {
      // handle error
   }
   req.Header.Set("Content-Type", "application/json; charset=utf-8")
   resp, err := client.Do(req)
   defer resp.Body.Close()
   return
}

相关