Go语言基础(Golang快速上手示例)

Go语言基础(Golang快速上手示例)_第1张图片

目录

打包exe

Windows打包

Linux打包

Mac打包

赋值

工程示例-文件解压

工程示例-文字信息转发钉钉机器人(模块)


 

打包exe

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

https://go.dev/dl/

如果用于开发建议低版本,不超过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打包

go build 成不同环境的方法:mac、linux、windows

Golang 在 Mac、Linux、Windows 下如何交叉编译

编译 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

gcc报错问题,安装mingw-w64,配置环境变量

Goland新建时无GOROOT且无法识别

Goland 2019下载和安装(带破解补丁和汉化包)


赋值

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

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

= 变量的非第一次赋值

== 等于操作符


工程示例-文件解压

Bandizip命令行参数

将在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

GitHub - gen2brain/go-unarr: Go bindings for unarr (decompression library for RAR, TAR, ZIP and 7z archives)


工程示例-文字信息转发钉钉机器人(模块)

go语言编写的钉钉群机器人

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
}

相关

两行代码实现Golang发送钉钉机器人消息

golang中将Int转换为string

你可能感兴趣的:(编程,golang,windows)