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概念的更多相关文章

  1. Golang项目目录结构组织

    其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序. 当然,首先要说的是环境变量$GOPATH,项目构建全靠它.这么说吧,想要构建一个项目,就要将这个 ...

  2. Cocoa Touch(一)开发基础:Xcode概念、目录结构、设计模式、代码风格

    Xcode相关概念: 概念:project 指一个项目,该项目会负责管理软件产品的全部源代码文件.全部资源文件.相关配置,一个Project可以包含多个Target. 概念:target 一个targ ...

  3. Go 项目的目录结构 及 安装技巧

    项目目录结构如何组织,一般语言都是没有规定.但 Go 语言这方面做了规定,这样可以保持一致性 1.一般的,一个 Go 项目在 GOPATH 下,会有如下三个目录: |--bin |--pkg |--s ...

  4. 每天一个linux命令(23):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  5. Go项目的目录结构

    项目目录结构如何组织,一般语言都是没有规定.但Go语言这方面做了规定,这样可以保持一致性,做到统一.规则化比较明确. 1.一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin |-- ...

  6. Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

    如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 注:以下以Windows平台为标准,AS以目前最新 ...

  7. 深入理解linux系统的目录结构(总结的非常详细)

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

  8. linux系统的目录结构

    前言 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要 ...

  9. 每天一个linux命令(19):Linux 目录结构

    对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...

随机推荐

  1. 自学semantic UI个人博客首页模板

    以下是代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <m ...

  2. SpringBoot整合MyBatis-Plus代码自动生成类

    在springboot的test测试类下创建 MpGenerator.java   配置  MpGenerator.java public class MpGenerator { @Test publ ...

  3. 花式赋值、列表、字典、解压缩、input()、格式化学习笔记

    目录 花式赋值 列表(list) 字典(dict) 解压缩 input()与用户交互 格式化的三种方式 f_String格式化(important) %s.%d占位符 format 格式化(不常用) ...

  4. docker for windows 中 镜像 microsoft/donet 的文件结构

    一共有3个文件夹和1个文件: [Program Files] [Users] [Windows] License.txt 使用vs默认生成的dockerfile文件生成后,会新增app文件夹.

  5. 【bzoj2502】清理雪道

    题目描述: 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升 ...

  6. 修改select的默认样式

    在我们用select的时候,通常因为他的默认样式比较丑而用自己样式,那首先要去掉他的默认样式 去掉select的边框和点击时的蓝色边框 select{border: none;outline: non ...

  7. XXX is not a function

    今天,一个以前的小伙伴跟我说他遇到了一个问题,调试了将近两天(这家伙一开始不打算干程序员,跑去干了两个月销售,现在又想回来写代码了,所以就自己折腾一个demo,免得面试的时候被问住) 我把他的代码从头 ...

  8. 自动化运维工具之Zabbix

    一.部署zabbix 1.配置master节点 准备LAMP环境和zabbix的yum源 # yum install httpd php mariadb-server -y # vim /etc/my ...

  9. websocket 无需通过轮询服务器的方式以获得响应 同步在线用户数 上线下线 抓包 3-way-handshake web-linux-shell 开发

    https://code.google.com/archive/p/phpwebsocket/source/default/source The WebSocket API (WebSockets) ...

  10. Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。

    2.3 hashes 类型及操作 Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加.删除操作都是 O(1)(平均).hash 特别适合用于存储对象.相 ...