Go项目结构和模块导入

golang项目结构与其他语言类似,但是仍然有一些需要注意的地方。

项目结构

环境配置

go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置

export GOPATH=/home/t/gospace

对于GOPATH来说,允许多个项目目录(Unix中为“:”,Windows中为“;”)。

项目目录

在项目目录中,一般包含三个文件夹,分别为srcpkgbin。各个文件夹功能如下,

  • 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项目结构和模块导入的更多相关文章

  1. idea项目左边栏只能看到文件看不到项目结构

    1.点击file->project structure..->Modules 点击右上角+加号 ->import Modules 2.选择你的项目,点击确定 3.在如下页面选择imp ...

  2. idea中看不到项目结构该怎么办

    点击file->project structure..->Modules 点击右上角+加号 ->import Modules 2.选择你的项目,点击确定   3.在如下页面选择imp ...

  3. 玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定

    前言 你好,我是A哥(YourBatman). 如何给Module模块单独增加依赖? 如何知道哪些Module模块用了Spring框架,哪些是web工程? IDEA如何打Jar包?打War包? 熟练的 ...

  4. 【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构

    导入项目之后,只显示项目文件,不显示项目结构 解决方法 1.点击file->project structure..->Modules 点击右上角+加号 ->import Module ...

  5. 05传智_jbpm与OA项目_部门模块中增加部门的jsp页面增加一个在线编辑器功能

    这篇文章讲的是在线编辑器功能,之前的部门模块中,增加部门的功能jsp页面起先是这么做的.

  6. flask开发restful api系列(7)-蓝图与项目结构

    如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restful api的最明显效果就是版本控制:而 ...

  7. 【Flask】 项目结构说明

    项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和Django这种框架又不一样,Fl ...

  8. day23单例模式 , 日志处理 , 项目结构目录

    # day23笔记 ## 一.补充,作业 ### 1.字符串格式化 ```pythonmsg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'alex', 'n2' ...

  9. Python全栈之路----常用模块----包及跨模块导入

    当你的模块文件越来越多,就需要对模块文件进行划分,比如把负责跟数据库交互的都放一个文件夹,把与页面交互相互的放入一个文件夹. 像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包. 那不同包之 ...

随机推荐

  1. Mac/IOS/linux获取当前时间包含微秒毫秒的代码

    #include <sys/time.h> 1 struct UnityLocalTimeStat { int Year; int Month; int DayOfWeek; int Da ...

  2. FMDB 排它锁

    -------------------------------------基本操作------------------------------------- #import "ViewCon ...

  3. java提升路线书单(原文自知乎刘欣)

    复制黏贴自知乎刘欣大神,作为个人的书单与指导路线 原文链接:https://www.zhihu.com/question/19848946/answer/92536822   刘欣 追寻内心的真正兴趣 ...

  4. 国外程序员整理的Java资源大全分享

    Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...

  5. SSDB 主从配置

    环境 Master/Slave     系统 IP SSDB版本 Master     CentOS6.7         10.10.3.211         ssdb-1.8.0     Sla ...

  6. hello!

    今天是个星期天 第一次开通了朕的博客 么么哒 感觉很困 唔~晚安zzzzz

  7. 四道简单DP

    DP类题目找到子问题(状态),然后找到转移方程,就OK #dp #likes matrixchain #according to two point's distance to recurrence ...

  8. asp.net中用cookie记住密码上次不用登陆

    ------最佳解决方案--------------------写入CookieResponse.Cookies["UserName"].Value = "用户名&quo ...

  9. Codeforces Round #361 (Div. 2) A

    A - Mike and Cellphone Description While swimming at the beach, Mike has accidentally dropped his ce ...

  10. [ios]利用alertView 插入数据都数据库。笔记

    利用alertView 插入数据都数据库 -(void)addItemToList { UIAlertView *alter=[[UIAlertViewalloc]initWithTitle:@&qu ...