【Go】Go语言入门

本文介绍了如何下载和配置Go语言环境,推荐了几个常用的IDE,详细讲解了程序开发流程,包括包管理与模块依赖,以及程序的编译与发布。重点提到了gomod和go.sum在依赖管理中的作用,确保项目的可靠性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介

1.1 软件下载

  1. 可以使用命令下载

brew install go

  1. 如果需要指定版本可以去官网下载: https://golang.google.cn/dl/,直接安装即可

有时间的同学可以看看,go的学习文档: https://topgoer.cn/docs/golang/golang-1ccjbpfstsfi1

1.2 环境配置

下载后默认安装地址是 /usr/local/go

  1. 查看go版本信息: go version

  2. 查看go环境信息:go env

  3. 编辑环境变量

    GOPATH: 你编写代码存放的目录

    GOPROXY:根据自己的需求修改地址(我理解类似于maven的xml文件),这里我用的是我 们公司内部的地址

    GOROOT: go安装的路径

  4. 使用 vim ~/.bash_profile 打开配置文件

      export GOROOT=/usr/local/go
    
      export GOPATH=/User/xxx/go  配置你自己的地址
    
  5. 保存退出,在终端中输入 source ~/.bash_profile ,使修改立刻生效。再输入 go env 可以看到刚才配置的自定义项目路径

  6. 第4步修改配置文件也可以使用 go env -w GOPATH=“******” 直接回车配置更方便不用进行第5步

1.3 IDE选择

一般有几种选择
1. Intellij Idea : 需要激活,Go插件支持
2. Visual Studio Code: 免费,丰富的Go插件
3. LiteIDE:免费,用C++ QT开发与VS GCC相似
4. Goland :专为Go语言打造的IDE

2. 程序开发

package main
import "fmt"
func main() {
	// 终端输出hello world
	fmt.Println("Hello world!")
}

go run hellow.go

在这里插入图片描述
编译器如果提示:The ‘main’ file has the non-main package or does not contain the ‘main’ function

将package 换成 package main 就可以了, 需要新建一个main 文件夹。

3. 程序发布

go build跟go run 在编译过程中类似,不同之处是go build 会生成编译好的二进制文件,并删掉编译过程中产生的临时目录。若没有-o指定文件名,则和当前目录名一致。
常用参数:

参数名格式含义
-o-o filename指定编译后二进制文件名
-a强制重编译设计的依赖
-s省略符号表并调试信息;故障时候打印信息
-w省略DWARF符号表;gdb调试信息
-p指定编译过程中的并发数,默认为cpu数
-work编译结束不删除临时文件,查看编译生成的文件
-n查看编译过程,不会继续执行编译后的二进制文件
-x查看编译过程,会继续执行编译后的二进制文件

4. 常见的命令

go mod 即 go modules 官方定义:官方go包的集合,modules是源代码交换和版本控制的单元,go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

  • init
    生成 go.mod文件,此命令在当前目录中初始化和创建一个新的go.mod文件,手动创建go.mod文件再包含一些module声明也等同该命令,而go mod init 命令是帮我们简单操作,可以帮我们自动创建。
  • download
    下载 go.mod 文件中知名的所有依赖,使用此命令来下载指定的模块,模块的格式可以根据主模块依赖的形式或者path@version 形式指定。
  • tidy
    执行go mod tidy时候工具链会进行如下操作:

    1、扫描你的项目中所有的 Go 文件,分析其中的 import 声明。
    2、确定哪些模块是项目真正依赖的,即哪些模块是被直接或间接引用的。
    3、任何 go.mod 文件中存在但项目中未引用的依赖将会被移除。
    4、对于缺失的依赖(即代码中引用但未在 go.mod 文件声明的),它会尝试添加适当的版本。(这里的版本不一定是最新版本,而是根据使用的API选择合适的版本)
    5、更新 go.sum 文件,包含所有依赖项的预期加密校验和。

其中go.sum是Go语言管理包管理go mod而使用的一种锁文件,用于记录Go项目中所有依赖包的路径和哈希值。每一行记录了一个依赖的信息,包括依赖项的模块路径、版本、哈希值等。
go.sum用来记录各个依赖版本和哈希值,用来验证项目依赖是否变化。当使用go mod安装依赖包的时候,根据go.mod文件中指定的版本号下载相应的依赖包,并计算依赖包的哈希值,将信息记录到go.sum中,当再次构建项目的时候go.mod检查go.sum文件,确保依赖项的哈希值和之前记录的值一样,以此来保证项目的构建过程是可重现的。go.sum文件的重要性在于保证Go项目的依赖关系的可靠性和安全性,避免因为依赖包版本不一样导致的不可预期的问题。

  • graph
    查看现有的依赖结构,生成项目所有依赖的报告,但可读性太差,图形化更方便。
    在这里插入图片描述
  • edit
    编辑go.mod文件,之后通过download或edit进行下载
  • vendor
    导出项目所有的依赖到vendor目录,从mod中拷贝到项目的vendor目录下,IDE可以识别这样的目录。
  • verify
    校验一个模块是否被篡改过,查询某个常见的模块出错是否已被篡改
  • why
    查看为什么需要依赖某模块,查询某个不常见的模块是否是哪个模块的引用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值