Go项目结构和模块导入
Go项目结构和模块导入
golang项目结构与其他语言类似,但是仍然有一些需要注意的地方。
项目结构
环境配置
go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置
export GOPATH=/home/t/gospace
对于GOPATH来说,允许多个项目目录(Unix中为“:”,Windows中为“;”)。
项目目录
在项目目录中,一般包含三个文件夹,分别为src,pkg和 bin。各个文件夹功能如下,
- src 存放golang源码
- pkg 存放编译后的文件
- bin 存放编译后可执行的文件
模块导入
在golang中,模块导入包括两种导入方式:相对路径和绝对路径。
相对导入
当前文件同一目录的model目录,但是不建议这种方式来import
import (
"./test1"
"../test2"
)
绝对导入
前提条件需要把该项目加入到golang的GOPATH中,
import (
"project/module1"
"project/module2/t"
)
import的其他操作
点操作
点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,
import . "fmt"
func test() {
Println("test")
}
别名操作
别名操作就是把包命名成另一个名字
import f "fmt"
func test() {
f.Println("test")
}
_操作
操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数
文件1: module/module1.go
package module1
import "fmt"
func init() {
fmt.Println("this is module1")
}
文件2: main.go
package main
import (
"fmt"
_ "module"
)
func main() {
fmt.Println("this is a test")
}
output:
this is module1
this is a test
Go项目结构和模块导入的更多相关文章
- idea项目左边栏只能看到文件看不到项目结构
1.点击file->project structure..->Modules 点击右上角+加号 ->import Modules 2.选择你的项目,点击确定 3.在如下页面选择imp ...
- idea中看不到项目结构该怎么办
点击file->project structure..->Modules 点击右上角+加号 ->import Modules 2.选择你的项目,点击确定 3.在如下页面选择imp ...
- 玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定
前言 你好,我是A哥(YourBatman). 如何给Module模块单独增加依赖? 如何知道哪些Module模块用了Spring框架,哪些是web工程? IDEA如何打Jar包?打War包? 熟练的 ...
- 【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
导入项目之后,只显示项目文件,不显示项目结构 解决方法 1.点击file->project structure..->Modules 点击右上角+加号 ->import Module ...
- 05传智_jbpm与OA项目_部门模块中增加部门的jsp页面增加一个在线编辑器功能
这篇文章讲的是在线编辑器功能,之前的部门模块中,增加部门的功能jsp页面起先是这么做的.
- flask开发restful api系列(7)-蓝图与项目结构
如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restful api的最明显效果就是版本控制:而 ...
- 【Flask】 项目结构说明
项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和Django这种框架又不一样,Fl ...
- day23单例模式 , 日志处理 , 项目结构目录
# day23笔记 ## 一.补充,作业 ### 1.字符串格式化 ```pythonmsg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2' ...
- Python全栈之路----常用模块----包及跨模块导入
当你的模块文件越来越多,就需要对模块文件进行划分,比如把负责跟数据库交互的都放一个文件夹,把与页面交互相互的放入一个文件夹. 像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包. 那不同包之 ...
随机推荐
- Jquery判断变量是否为空
var aaa=''; if(aaa) { //aaa不为空也不是不可识别对象时执行 } else { //aaa为空或不可识别时执行 } aaa必须是变量,对象的属性好像是不行,
- SQL参数化查询自动生成SqlParameter列表
string sql = @"INSERT INTO stu VALUES (@id,@name) "; 参数化查询是经常用到的,它可以有效防止SQL注入.但是需要手动去匹配参数@ ...
- 解决scrollview和viewpager冲突
import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; i ...
- distinct 与 group by 去重
例如下表格:表名:fruit id Name Price Num 1 西瓜 10 2 2 西瓜 11 2 3 香蕉 10 3 4 桃子 10 2 当我想获取Name不重复的数据,结果如下 id Nam ...
- WPF中为ListView动态绑定数据(可参考)
GridView gv = new GridView(); DataTable dt = fieldManageBLL.GetFieldManage(moduleName); for(int i=0; ...
- Rdeis 详解 小白
Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-v ...
- JavaScript(三) 正则表达式 以及实现的功能
RegExp 是正则表达式的缩写.定义RegExp正则表达式 RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 p 的 RegExp 对象,其模 ...
- selenium:org.openqa.selenium.WebDriverException: f.QueryInterface is not a function
今天用selenium2遇到问题 org.openqa.selenium.WebDriverException: f.QueryInterface is not a function 查了好久最后终于 ...
- 2015 ACM/ICPC EC-Final
A. Boxes and Balls 二分找到最大的不超过$n$的$\frac{x(x+1)}{2}$形式的数即可. #include <bits/stdc++.h> using name ...
- var a=b=c=1; 和 var a=1, b=2, c=3; 的区别。
function test(){ var a=b=c=1; var a=1, b=2,c=3; } 1中b\c 为全局变量, a为私量 2中a\b\c为私量