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


目录
相关文章
|
29天前
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
|
2天前
|
存储 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开发至关重要。
11 2
|
7月前
|
Linux Go iOS开发
Go语言新手指南:正确使用GOPATH的步骤
Go语言新手指南:正确使用GOPATH的步骤
1359 0
|
11月前
|
NoSQL 关系型数据库 MySQL
学习golang(9) 初探:go path与go mod
学习golang(9) 初探:go path与go mod
148 1
|
编译器 Go
go语言工作目录都有什么?GOPATH下的目录结构
go语言工作目录都有什么?GOPATH下的目录结构
178 0
go语言工作目录都有什么?GOPATH下的目录结构
|
Go 开发工具
【GO】详解GOROOT和GOPATH
【GO】详解GOROOT和GOPATH
789 0
【GO】详解GOROOT和GOPATH
|
关系型数据库 MySQL Go
Golang关于Go ROOT 和Go PATH的设置
关于Go ROOT 和Go PATH的设置
1006 0
Golang关于Go ROOT 和Go PATH的设置
|
存储 缓存 Unix
Go:包管理工具GOPATH、vendor、dep 、go module
Go:包管理工具GOPATH、vendor、dep 、go module
405 0
Go:包管理工具GOPATH、vendor、dep 、go module
|
1天前
|
安全 Go 开发者
Golang深入浅出之-Go语言中的CSP模型:深入理解并发哲学
【5月更文挑战第1天】Go语言基于CSP理论,借助goroutines和channels实现独特的并发模型。Goroutine是轻量级线程,通过`go`关键字启动,而channels提供安全的通信机制。文章讨论了数据竞争、死锁和goroutine泄漏等问题及其避免方法,并提供了一个生产者消费者模型的代码示例。理解CSP和妥善处理并发问题对于编写高效、可靠的Go程序至关重要。
7 2
|
1天前
|
设计模式 Go 调度
Golang深入浅出之-Go语言中的并发模式:Pipeline、Worker Pool等
【5月更文挑战第1天】Go语言并发模拟能力强大,Pipeline和Worker Pool是常用设计模式。Pipeline通过多阶段处理实现高效并行,常见问题包括数据竞争和死锁,可借助通道和`select`避免。Worker Pool控制并发数,防止资源消耗,需注意任务分配不均和goroutine泄露,使用缓冲通道和`sync.WaitGroup`解决。理解和实践这些模式是提升Go并发性能的关键。
12 2