• golang安装和基础配置


    环境变量

    使用命令:go env 可查看所有环境变量
    常用的主要有以下环境变量

    • GO111MODULE :是否开启mod模式,1.12之后默认为开启
    • GOROOT:go的安装目录
    • GOPATH:go的工作目录
    • GOPROXY:go依赖下载代理地址。默认镜像是国外地址,速度太慢的话可修改为为国内镜像,如:https://goproxy.cn
    • GOSUMDB:mod模式下载包时,gosum的验证地址,不设置会报错,可设置为:sum.golang.google.cn

    使用命令:go env -w GOSUMDB=sum.golang.google.cn 修改环境变量

    常用命令

    • go run 文件名 :执行mian文件,不生成任何文件
    • go build :编译并生成可执行文件。
      若当前目录下有main文件,则在当前目录下生成可执行文件,否则不生成任何文件。go build -o 可执行文件名 可指定生成的文件名和位置
    • go install:编译并生成可文件,使用该命令必须配置GOPATH。
      若当前目录下有main文件,会在GOPATH/bin目录下生成可执行文件。若当前目录没有main文件,则把目录下的包文件编译为.a文件,并保存到$GOPATH/pkg目录下。
    • go get :获取远程依赖包
      常用的如:go get github.com/gin-gonic/gin 会自动下载并安装依赖包。若使用了mod,在文件中直接引入即可,执行时会自动下载安装。
      也可追加参数,对包进行更新和删除

    go install和go build的主要区别就是可以生成.a编译缓存文件。go bulid每次执行都要重新编译所有包文件,而go install则会先检查包对应的.a文件,如果包文件未修改,则直接使用.a文件,不需要重新编译,提高了速度。
    如果项目很大,每次编译都要花很长时间,则建议使用 go install 来编译,充分利用它对依赖包的缓存功能。

    使用mod创建一个项目

    mod是go的依赖管理工具,相当月php的composer。golang在1.11开始才支持mod,在此之前,go使用go get 命令下载依赖包,和项目代码都必须放在gopath/src目录下。

    modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件,不同项目还可以是使用同一个依赖包,无需重复下载

    创建项目
    在任意目录下创建一个项目文件夹,如project
    打开命令行,在project目录下执行命令:go mod init project
    执行成功后,目录下会生成一个go.mod文件夹
    下载依赖
    在项目目录下新建一个main.go文件,如下

    package main
    
    import (
    	"fmt"
        "github.com/gin-gonic/gin"
    )
    
    func main() {
        fmt.Println("hello mod")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    文件中引入了gin框架包,我们需要先使用 go get命令先下载依赖,再执行main.go文件
    也可也直接执行go main.go,go mod会自动查找依赖自动下载

    执行成功后,go.mod文件夹下有一个go.sum文件,可以在go.sum文件下看到gin相关的包

  • 相关阅读:
    人工智能和神经网络区别,人工神经网络有哪几种
    修复中间件log4j漏洞方案(直接更换漏洞jar包)
    Android挖取原图手指触点区域RectF(并框线标记)放大到ImageView宽高与矩阵mapRadius,Kotlin
    Python-ONNX 相关
    2022-10-21 解决vuex报错:Cannot read properties of undefined (reading ‘state‘)“
    离线安装mysql
    openGauss数据库基本操作(超详细)
    让AI为您自动生成独特的商品标题,商品描述和营销文案
    Linux 文件基础
    阿里云解决方案架构师张平:云原生数字化安全生产的体系建设
  • 原文地址:https://blog.csdn.net/u012830303/article/details/126141593