2.golang应用目录结构和GOPATH概念
golang 语言有一个GOPATH的概念就是当前工作目录
[root@localhost golang_test]# tree
.
├── bin
│ └── hello
├── first.go
├── pkg
├── README.md
├── src
│ └── github.com
│ └── leleyao
│ ├── hello
│ │ └── hello.go
│ ├── mymath
│ │ └── mymath.go
│ └── stringutil
│ ├── reverse.go
│ └── reverse_test.go
└── statics
└── timg.jpg [root@localhost golang_test]# tail -3 /etc/profile
export GOPATH=/root/golang_test
export PATH=$PATH:/go/bin
export PATH=$PATH:$(go env GOPATH)/bin
[root@localhost golang_test]# echo $GOPATH
/root/golang_test
[root@localhost golang_test]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/go/bin:/root/golang_test/bin:/root/bin
GOPATH的概念时代码的起始目录,当进行go install 或者代码级别的 import 时 默认的包搜索路径
通常一个代码 应该包含 src pkg bin 三个目录再GOPATH 之下
src 为源码路径
源码有三个分类
1.声明为package main 的包
go run 可直接运行
[root@localhost hello]# go run hello.go
123
0
Hello, My lele yao !
[root@localhost hello]# cat hello.go
package main import (
"fmt" . "github.com/leleyao/stringutil"
) var _lele int
func main() {
var _song int
_song = 123
fmt.Println(_song)
fmt.Println(_lele)
fmt.Println(Reverse("! oay elel yM ,olleH"))
}
go build 会在当前目录生成 同名二进制
[root@localhost hello]# pwd
/root/golang_test/src/github.com/leleyao/hello
[root@localhost hello]# go build github.com/leleyao/hello # 两种指定方式
[root@localhost hello]# ls
hello hello.go [root@localhost hello]# go build
[root@localhost hello]# ls
hello hello.go
[root@localhost hello]# # go install
[root@localhost hello]# ll $GOPATH/bin
total 1952
-rwxr-xr-x. 1 root root 1997543 May 23 09:51 hello go install 会在 GOPATH bin 下 生成 同名二进制
2. 一个代码目录下有多个文件且有文件不是 没有func main 则执行go install 会在对应目录生编译过程文件
ll /root/golang_test/pkg/linux_amd64/github.com/leleyao/stringutil.a
-rw-r--r--. 1 root root 2902 May 23 13:07 /root/golang_test/pkg/linux_amd64/github.com/leleyao/stringutil.a
[root@localhost stringutil]# rm -rf /root/golang_test/pkg/linux_amd64
[root@localhost stringutil]# cat reverse.go
// Package stringutil contains utility functions for working with strings.
package stringutil // Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
3. 以_test 结尾的文件会在执行 go test 命令时进行测试
[root@localhost stringutil]# go test
PASS
ok github.com/leleyao/stringutil 0.003s
[root@localhost stringutil]# ls
reverse.go reverse_test.go
2.golang应用目录结构和GOPATH概念的更多相关文章
- Golang项目目录结构组织
其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序. 当然,首先要说的是环境变量$GOPATH,项目构建全靠它.这么说吧,想要构建一个项目,就要将这个 ...
- Cocoa Touch(一)开发基础:Xcode概念、目录结构、设计模式、代码风格
Xcode相关概念: 概念:project 指一个项目,该项目会负责管理软件产品的全部源代码文件.全部资源文件.相关配置,一个Project可以包含多个Target. 概念:target 一个targ ...
- Go 项目的目录结构 及 安装技巧
项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...
- 每天一个linux命令(23):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- Go项目的目录结构
项目目录结构如何组织,一般语言都是没有规定.但Go语言这方面做了规定,这样可以保持一致性,做到统一.规则化比较明确. 1.一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |-- ...
- Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)
如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...
- 深入理解linux系统的目录结构(总结的非常详细)
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- linux系统的目录结构
前言 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要 ...
- 每天一个linux命令(19):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
随机推荐
- 使用VisualStudio 开发Arduino
Arduino IDE界面简洁,整体功能还算完善,相比其他编译器明显的不足就是不能进行硬件调试,再就是没有代码提示功能,文件关系不清晰.头文件打开不方便. VisualStudio作为时下最为流行的W ...
- 【GDOI2016模拟3.9】暴走的图灵机
题目 分析 我们发现当两个字符串合并时,a0.a1表示左右两个字符串中有多少个T,C表示合并处新增的T的个数,那么 a0=a1 a1=a0+a1+C 令s0和s1表示左右手两个字符串,那么每一次操作后 ...
- java基础拓展
1. 作用域:public private protected 默认的区别 public:在同一项目中,被public修饰的在任何地方都可以被调用 private:被private修饰的,只能在本类中 ...
- 弹性盒子FlexBox简介(一)
一.理解弹性盒子 弹性盒子是CSS3的一种新的布局模式. CSS3弹性盒子(Flexible Box或flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时,确保元素拥有恰当的行为的布局方 ...
- 不同地区Android开发者使用哪些设备测试APP?
我们的团队密切关注着移动世界的趋势,以便可以提供所有有关变化的最紧密和最重要的信息.春天恰好是对app进行新一轮测试并检查其与不同Android设备兼容性如何的最佳时机.下面让我们一起来看看全世界范围 ...
- POJ 2391 Ombrophobic Bovines ( 经典最大流 && Floyd && 二分 && 拆点建图)
题意 : 给出一些牛棚,每个牛棚都原本都有一些牛但是每个牛棚可以容纳的牛都是有限的,现在给出一些路与路的花费和牛棚拥有的牛和可以容纳牛的数量,要求最短能在多少时间内使得每头牛都有安身的牛棚.( 这里注 ...
- Activiti之Idea生成png图片及解决乱码问题(四)
IDEA 工具中的操作方式 第一步:将 holiday.bpmn 文件改为扩展名 xml 的文件名称: holiday.xml修改前的 bpmn 文件,效果如下: 第二步: 在 holiday.xml ...
- SSM+PageHelper 使用
项目中使用了maven 1 引入jar包 首先需要引入PageHelper的jar包. 如果使用了maven,那么只要在pom.xml中引入该插件即可,引入如下: <dependency> ...
- PHP CGI
cgi是通用网关接口,是连接web服务器和应用程序的接口. web服务器负责接收http请求,但是http请求从request到response的过程需要有应用程序的逻辑处理,web服务器一般是使用C ...
- 按ECS退出全屏模式
<!DOCTYPE html><html><meta http-equiv="Content-Type" content="text/htm ...