工作空间

Go语言工作空间:编译工具对源码目录有严格要求,每个工作空间 (workspace) 必须由bin、pkg、src三个目录组成。

src ---- 项目源码目录,里面每一个子目录,就是一个包,包内是Go语言的源码文件。
pkg ---- Go语言编译的.a 中间文件存放目录,可自动生成。
bin ---- Go语言编译可执行文件存放目录,可自动生成。

包结构

包是结构化代码的一种方式:每个程序都由包的概念组成,可以使用自身的包或者从其它包中导入内容。

如同其它一些编程语言中的类库或命名空间的概念,每个Go文件都属于且仅属于一个包。一个包可以由许多以.go为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。

包声明 "package + 包名" ,必须在源文件中非注释的第一行指明这个文件属于哪个包。
如:package main。package main表示一个可独立执行的程序,每个Go应用程序都包含一个名为 main 的包。

同一个包(package)下面,可以有非常多的不同文件,只要每个文件的头部都有相同name就可以,如 "package oldboy" 。文件夹名字可以和这个package名称不一致。

标准库

在Go的安装文件里包含了一些可以直接使用的包,即标准库。
Go语言标准库包,覆盖了几乎所有的基础库,提供了丰富广泛的功能特性。
标准库的内容还可能继续增加,大家可以通过在线查阅库API或使用godoc(包含在Go发布包中)来获取最新信息以及全面了解每个包所具备的功能。

第三方库

通过"go get + 完整包名"保存下载第三方库。

在执行go get 命令之前,确保你的电脑配置了环境变量GOPATH,并且安装git。

导出包

在Go语言中根据首字母的大小写来确定可以访问的权限。如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用。该规则适用于全局变量、全局常量、类型、结构字段、函数、方法等。

可以简单的理解成,首字母大写是公有的,首字母小写是私有的。

在导入包之后,你只能访问包所导出的名字,任何未导出的名字是不能被包外的代码访问的。

导入包

使用包成员前,必须先用import关键字导入,但不能形成导入循环。

import用法:

第一种,导入系统包。

import "fmt" 

第二种,相对路径导入包,导入同一目录下 test 包中的内容

import "./test" 

第三种,绝对路径导入包,导入 gopath/src/oldboy/python 包中的内容。

import "oldboy/python"

第四种,导入包并启用别名。

导入fmt,并给他启别名f

import f "fmt"

将fmt启用别名".",这样就可以直接使用其内容,而不用再添加fmt。
如fmt.Println可以直接写成Println。

import . "fmt" 

第五种,"import _"

import  _ "fmt"  

表示不使用该包,而是只是使用该包的init函数,并不显示的使用该包的其他内容。
这种形式的import,当import时就执行了fmt包中的init函数,而不能够使用该包的其他函数。

注意:未使用的导入包,会被编译器视为错误 (不包括 "import _")。实例如下:

package main

import (
"fmt"
) func main() {
}

编译错误:

./main.go::: imported and not used: "fmt"

Go语言包和文件的更多相关文章

  1. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  2. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  3. SplendidCRM 如何添加及使用中文语言包

    SplendidCRM 功能很强大,也支持多国语言,但关于中文语言安装的介绍在网上一直都找到,自已摸索了一下,成功使SplendidCRM应用中文,以下是安装方法. 版本号:SplendidCRM 7 ...

  4. [日常] go语言圣经-声明,变量,赋值,类型,包和文件习题

    go语言圣经-声明1.四种类型的声明语句:var.const.type和func,分别对应变量.常量.类型和函数实体对象的声明2.包一级声明语句声明的名字可在整个包对应的每个源文件中访问,局部声明的名 ...

  5. .NET Core 发布时去掉多余的语言包文件夹

    用 .NET Core 3.x 作为目标框架时发布完之后,会发现多了很多语言包文件夹,类似于: 有时候,不想要生成这些语言包文件夹,需要稍微配置一下. 在 PropertyGroup 节点中添加如下的 ...

  6. CI框架 -- 核心文件 之 Lang.php(加载语言包)

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class CI_Lang { var $l ...

  7. Eclipse中文语言包安装和设置中文Doc

    1.安装中文语言包 Eclipse所有的扩展功能都是以插件的形式添加上去的,安装插件时有多种形式,下面是比较常用的两种: 直接将插件中的文件复制到Eclipse对于的目录中.优点是安装时很方便,缺点是 ...

  8. linux安装中文语言包

    相关配置如下: yum install fonts-chinese.noarch yum install m17n-db-common-cjk yum install m17n-db-chinese安 ...

  9. thinkphp语言包

    1.config.php语言包相关配置. //开启语言包 'LANG_SWITCH_ON' => true, 'LANG_AUTO_DETECT' => true, // 自动侦测语言 开 ...

随机推荐

  1. tomcat启动报错:java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.45\webapps\activiti-explorer does not exist or is not a readable directory

    java.lang.IllegalArgumentException: Document base D:\apache-tomcat-6.0.45\webapps\erp does not exist ...

  2. maven 引用本地jar

    1.添加lib文件夹在src文件夹中.2.拷贝所需要的test.jar包到lib文件夹.3.在pom文件加入如下依赖 <!--添加本地私有包--><dependency> &l ...

  3. myisam innodb memory 区别(2)

    1.区别:1) MyISAM管理非事务表.提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,是默认的存储引擎,除非配置MySQL默认使用另外一个引擎.2)MEMORY存储 ...

  4. 【转载】redis.conf文件详解

    转载地址:http://blog.csdn.net/zhutulang/article/details/51969760 Redis.conf文件可以在github上查看,下面是我整理的其中的配置项( ...

  5. Spring框架总结(二)

    开发一个简单的Spring项目: 一.开发环境搭建: 1.引入源码jar :3.0以前的版本含有依赖jar包,3.0以后只有spring的核心jar 包 core的jar包 commons-loggi ...

  6. Word2010如何编辑好了直接发布csdn博文?

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  7. 使用#include消除重复代码

    消除重复代码代码很多种,比如: 1)提炼成函数复用 2)使用宏 3)继承 4)使用闭包(boost::bind.boost::function) 上述是最为常用的,对于C++程序,闭包可能用得相对少一 ...

  8. Digester学习笔记(三)转载

    总觉得,Digester不仅仅能作配置文件解析,而且可以作得更多. 配置属性 Digester用来解析应用系统的配置文件,其本身也有很可配置的属性. 属性 描述 classLoader 指定类装载器( ...

  9. select2的一些隐藏功能

    select 3.5版本的说明文档里面存在 http://select2.github.io/select2/index.html option选项 sortResults query为查询字符串

  10. .net Tuple特性

    .net 4.0 引入了 Tuple特性: 在C# 4.0之前我们函数有多个返回值,通常是使用ref,out .到了c# 4.0 应当使用元组Tuple而不是使用输出参数,在任何时候都应避免使用ref ...