Go项目结构和模块导入

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

项目结构

环境配置

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

export GOPATH=/home/t/gospace

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

项目目录

在项目目录中,一般包含三个文件夹,分别为srcpkg和 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


本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

时间: 2024-08-29 10:34:39

Go项目结构和模块导入的相关文章

Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航

原文:Android零基础入门第15节:掌握Android Studio项目结构,扬帆起航 经过前面的学习,Android Studio开发环境已准备OK,运行Android应用程序的原生模拟器和Genymotion模拟器都准备妥当.在之前简单讲过Eclipse中Android工程的项目结构和运行原理,那么本期就来一起来了解一下Android Studio的项目结构.     一.项目查看模式   前面在熟悉Android Studio界面中提到了Project项目工具窗口,一共支持10种查看模

《Python高手之路》——1.2 项目结构

1.2 项目结构 项目结构应该保持简单,审慎地使用包和层次结构,过深的层次结构在目录导航时将如同梦魇,但过平的层次结构则会让项目变得臃肿. 一个常犯的错误是将单元测试放在包目录的外面.这些测试实际上应该被包含在软件的子一级包中,以便: 避免被setuptools(或者其他打包的库)作为tests顶层模块自动安装: 能够被安装,且其他包能够利用它们构建自己的单元测试. 图1-1展示了一个项目的标准的文件层次结构. setup.py是Python安装脚本的标准名称.在安装时,它会通过Python分发

MVC 5 第二章 MVC5应用程序项目结构_实用技巧

单从MVC的字面意思我们便能够注意到M-模型, View-视图, Controller-控制器,他们都各自存储在解决方案下的单独的文件夹中.除此之外还有很多有用的信息值得我们去探索,废话少说,首先我们来看一下MVC 5的项目结构. 通过上图,我们可以清晰地了解到MVC 5应用程序的项目结构,接下来我们来依次解释下他们各自的应用. App_Data: 该文件夹主要是包含应用程序的本地存储, 它通常以文件形式(如Microsoft SQL Server数据库文件, XML文件等)包含数据存储. Ap

详解Python模块导入方法

python常被昵称为胶水语言,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起.python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径. 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构: `-- src |-- mod1.py `-- test1.py 若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *; (2)主程序所在目录

ABP架构学习系列一 整体项目结构及目录

本系列是基于aspnetboilerplate-0.8.4.0版本写的,其中原因是由于较高的版本太抽象难以理解和分析,对于还菜菜的我要花更多的时间去学习. abp的源码分析学习主要来源于 HK Zhang ,他的博客是https://www.cnblogs.com/1zhk/ 一.什么是ABP ASP.NET Boilerplate(ABP)是现代新的Web应用程序的最佳实践和最流行的工具的起点.它的目标是实体模型.通用应用程序框架和项目模板. ABP是一个建立在最新的ASP.NET的MVC和W

实例:创建SWT项目的原生库导入问题

创建|问题|项目 对于 Eclipse 3.1.x 而言,并没有书中提到的那个"org.eclipse.swt.win32_3.0.1"目录,自然也不会有目录下的 swt.jar 和 swt-win32-3063.dll,这个目录在 Eclipse 3.1.x 中被 org.eclipse.swt.win32.win32.x86_3.1.x.jar 文件替代,而原生库文件也被压缩到这个 jar 文件中,用 WinRAR 解压即可得到. 在安装了 SWT Designer 后通过其建立项

ThinkPHP修改项目结构

纯属闲着无聊的- -!,前两天一直研究dede,放弃了.无聊最近准备研究ThinkPHP,但是ThinkPHP生成的目录的结构让我很郁闷,个人还是比较喜欢dede之类的那种比较简单的结构,所以今天就下手改了一下.现在分享出来给大家. 1.先修改生成项目目录的主体结构,这个不需要修改ThinkPHP的源码(也可以修改,如果是初学者,最好还是先别修改了) 新建index.php入口文件,然后不按照手册新建项目.输入以下代码; $root=dirname(__FILE__); $root=str_re

Python创建模块及模块导入的方法

  本文实例讲述了Python创建模块及模块导入的方法.分享给大家供大家参考.具体分析如下: python学习手册中写道: 定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块. 比如说,下面的代码输入到一个文件中,就可以看作是一个模块: ? 1 2 3 4 def printme(var): print var if __name__ == '__main__': printme(1) 假设说输入到a.py中,

maven-Maven建立项目时的模块之间的依赖问题与单元测试的冲突

问题描述 Maven建立项目时的模块之间的依赖问题与单元测试的冲突 问题是这样的:我用Maven建立的了个spring mvc 的demo.这个项目共有webcontroller servicedaomodelutils这几个module.然后,web依赖于controllercontroller依赖于serviceservice依赖于daodao依赖于modelmodel依赖于utilsutils依赖于spring相关的jar.我把spring的配置文件放在了web下(因为是demo所以只有一