Golang(一) 入门

  • Post author:
  • Post category:golang




Golang(一)



一、Go安装


Go官网下载地址



Go官方镜像站



二、Go入门



1. Go程序

package main	//声明程序为main包,表明这是一个可执行文件

import "fmt"	//导入内置fmt包

func main() {		//main()函数,程序的入口
    fmt.Println("hello,go")	//终端输出hello,go
}



2.Go编译

go build	//编译生成hello.exe的可执行程序
go build hello	//编译生成hello.exe的可执行文件

go build -o haha.exe	//指定生成的haha.exe文件名的可执行文件



3. 执行结果

#hello.exe
hello,go



4.交叉编译



1.window下编译Linux和Mac
SET CGO_ENABLED=0  # 禁用CGO
SET GOOS=linux  # 目标平台是linux
SET GOARCH=amd64  # 目标处理器架构是amd64

SET CGO_ENABLED=0  # 禁用CGO
SET GOOS=darwin  # 目标平台是linux
SET GOARCH=amd64  # 目标处理器架构是amd64

go build


2.Linux
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build		#目标平台Mac

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build	#目标平台Linux


3.Mac
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build	#目标平台Linux

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build	#目标平台window



三、go moduel

go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,

go module

将是Go语言默认的依赖管理工具。

使用 go module 管理依赖后会在项目根目录下生成两个文件

go.mod



go.sum



1.模式设置


  1. GO111MODULE=off

    禁用模块支持,编译时会从

    GOPATH



    vendor

    文件夹中查找包。

  2. GO111MODULE=on

    启用模块支持,编译时会忽略

    GOPATH



    vendor

    文件夹,只根据

    go.mod

    下载依赖。

  3. GO111MODULE=auto

    ,当项目在

    $GOPATH/src

    外且项目根目录有

    go.mod

    文件时,开启模块支持。



2.GOPROXY

Go1.13之后

GOPROXY

默认值为

https://proxy.golang.org

,国内推荐使用

goproxy.cn

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



3.go mod命令

go mod download    #下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit        #编辑go.mod文件
go mod graph       #打印模块依赖图
go mod init        #初始化当前文件夹, 创建go.mod文件
go mod tidy        #增加缺少的module,删除无用的module
go mod vendor      #将依赖复制到vendor下
go mod verify      #校验依赖
go mod why         #解释为什么需要依赖



4.go.mod

module github.com/study-go	#模块名

go 1.23	#模块的Go版本

require (	#模块依赖和版本
	github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586
	github.com/gin-gonic/gin v1.4.0
	github.com/go-sql-driver/mysql v1.4.1
	github.com/jmoiron/sqlx v1.2.0
	github.com/satori/go.uuid v1.2.0
	google.golang.org/appengine v1.6.1 //indirect	#indirect:间接引用
)

replace (	#模块依赖替代,
	golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac 
	=> github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
	golang.org/x/net v0.0.0-20180821023952-922f4815f713 
	=> github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
	golang.org/x/text v0.3.0 
	=> github.com/golang/text v0.3.0
)



版权声明:本文为qq_38473355原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。