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


目录
相关文章
|
7月前
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
1304 0
|
4月前
|
Unix 编译器 Go
|
7月前
|
存储 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开发至关重要。
140 2
|
Linux Go iOS开发
Go语言新手指南:正确使用GOPATH的步骤
Go语言新手指南:正确使用GOPATH的步骤
4330 0
|
NoSQL 关系型数据库 MySQL
学习golang(9) 初探:go path与go mod
学习golang(9) 初探:go path与go mod
201 1
|
编译器 Go
go语言工作目录都有什么?GOPATH下的目录结构
go语言工作目录都有什么?GOPATH下的目录结构
go语言工作目录都有什么?GOPATH下的目录结构
|
Go 开发工具
【GO】详解GOROOT和GOPATH
【GO】详解GOROOT和GOPATH
862 0
【GO】详解GOROOT和GOPATH
|
15天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
26 7
|
15天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
15天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
92 71