Go | 讲解GOROOT、GOPATH、GOBIN

简介: Go | 讲解GOROOT、GOPATH、GOBIN

前言


Go(又称 Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go 被誉为是未来的服务器端编程语言。


Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性。


特色:


  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

GOROOT


其实就是golang 的安装路径


当你安装好golang之后其实这个就已经有了


GOPATH


go命令依赖一个重要的环境变量:GOPATH

GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;

当有多个GOPATH时默认将go get获取的包存放在第一个目录下


GOBIN


go install编译存放路径。不允许设置多个路径。可以为空。为空时则遵循“约定优于配置”原则,可执行文件放在各自GOPATH目录的bin文件夹中(前提是:package main的main函数文件不能直接放到GOPATHsrc下面。


GOPATH目录约定有三个子目录


  1. **src:**存放源代码(比如:.go .c .h .s等)   按照golang默认约定,go rungo install等命令的当前工作路径(即在此路径下执行上述命令)。


  1. **pkg:**编译时生成的中间文件(比如:.a)  golang编译包时


  1. **bin:**编译后生成的可执行文件(为了方便,可以把此目录加入到 PATH变量中,如果有多个gopath,那么使用PATH 变量中,如果有多个gopath,那么使用PATHgopath使{GOPATH//://bin:}/bin添加所有的bin目录)


目录结构规划


GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,


例如:


$GOPATH/src/myproject 表示myproject这个应用包或者可执行应用,这个根据package是main还是其他来决定,main的话就是可执行应用,其他的话就是应用包,这个会在后续详细介绍package。


go get 和go install


go get会做两件事:


  1. 从远程下载需要用到的包


  1. 执行go install


go install 会生成可执行文件直接放到bin目录下,当然这是有前提的

你编译的是可执行文件,如果是一个普通的包,会被编译生成到pkg目录下该文件是.a结尾


go 整体开发目录


不使用 go mod 的方式,项目全在 $GOPATH/src


go_project     // go_project为GOPATH目录
  -- bin
     -- myApp1  // 编译生成
     -- myApp2  // 编译生成
     -- myApp3  // 编译生成
  -- pkg
  -- src
     -- myApp1     // project1
        -- models
        -- controllers
        -- others
        -- main.go 
     -- myApp2     // project2
        -- models
        -- controllers
        -- others
        -- main.go 
     -- myApp3     // project3
        -- models
        -- controllers
        -- others
        -- main.go


目录
相关文章
|
6月前
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
1155 0
|
3月前
|
Unix 编译器 Go
|
6月前
|
存储 Go
Golang深入浅出之-Go语言依赖管理:GOPATH与Go Modules
【4月更文挑战第27天】Go语言依赖管理从`GOPATH`进化到Go Modules。`GOPATH`时代,项目结构混乱,可通过设置多个工作空间管理。Go Modules自Go 1.11起提供更现代的管理方式,通过`go.mod`文件控制依赖。常见问题包括忘记更新`go.mod`、处理本地依赖和模块私有化,可使用`go mod tidy`、`replace`语句和`go mod vendor`解决。理解并掌握Go Modules对现代Go开发至关重要。
125 2
|
Linux Go iOS开发
Go语言新手指南:正确使用GOPATH的步骤
Go语言新手指南:正确使用GOPATH的步骤
4035 0
|
NoSQL 关系型数据库 MySQL
学习golang(9) 初探:go path与go mod
学习golang(9) 初探:go path与go mod
194 1
|
编译器 Go
go语言工作目录都有什么?GOPATH下的目录结构
go语言工作目录都有什么?GOPATH下的目录结构
go语言工作目录都有什么?GOPATH下的目录结构
|
Go 开发工具
【GO】详解GOROOT和GOPATH
【GO】详解GOROOT和GOPATH
853 0
【GO】详解GOROOT和GOPATH
|
3天前
|
存储 JSON 监控
Viper,一个Go语言配置管理神器!
Viper 是一个功能强大的 Go 语言配置管理库,支持从多种来源读取配置,包括文件、环境变量、远程配置中心等。本文详细介绍了 Viper 的核心特性和使用方法,包括从本地 YAML 文件和 Consul 远程配置中心读取配置的示例。Viper 的多来源配置、动态配置和轻松集成特性使其成为管理复杂应用配置的理想选择。
16 2
|
6天前
|
安全 Go
用 Zap 轻松搞定 Go 语言中的结构化日志
在现代应用程序开发中,日志记录至关重要。Go 语言中有许多日志库,而 Zap 因其高性能和灵活性脱颖而出。本文详细介绍如何在 Go 项目中使用 Zap 进行结构化日志记录,并展示如何定制日志输出,满足生产环境需求。通过基础示例、SugaredLogger 的便捷使用以及自定义日志配置,帮助你在实际开发中高效管理日志。
19 1
|
5天前
|
程序员 Go
go语言中的控制结构
【11月更文挑战第3天】
81 58