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全栈之路----常用模块----包及跨模块导入
当你的模块文件越来越多,就需要对模块文件进行划分,比如把负责跟数据库交互的都放一个文件夹,把与页面交互相互的放入一个文件夹. 像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包. 那不同包之 ...
随机推荐
- ExtJs服务器端代理(Ajax)
服务器端代理: Ajax:在当前域中发送请求 JsonP:跨域的请求 Rest:与服务器进行RESTful(GET/PUT/POST/DELETE)交互 Direct:使用 Ext.direct.M ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- gcc编译器用法(自学总结)
GCC仅仅意味着GNU C Compiler. gcc工作四个步骤:预处理,编译,汇编,连接. 1.预处理: 编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项&quo ...
- Python 格式化输出
转载 今天写程序又记不清格式化输出细节了--= =索性整理一下. 注意: 与C/C++ 不同的是这里括号后面不需要加' , '号. python print格式化输出. 1. 打印字符串 print ...
- SQL SERVER 数据导出JSON
执行下面的存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE[dbo].[SerializeJSON]( @ ...
- Java面向对象之封装
面向对象的三个特征:封装.继承和多态. Java开发的过程就是找合适的库对象使用,没有对象创建新对象.找对象,建立对象,使用对象并维护对象之间的关系. 类就是对现实生活中事物的描述,而对象就是这类事 ...
- js动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# DataTable的Select()方法不支持 != 判断
异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记“!”. Source= ...
- Django 权限管理
对于Django而言,虽然自带了一些基本的通用权限限制,但现实中,可能我们更希望自己去定义业务权限划分 Django对于权限这块的部分验证方法 user = request.user user.is_ ...
- 关于nginx.pid丢失的解决办法
在停掉nginx的过程中突然出现如下的提示: