原文地址:

http://www.niu12.com/article/10

  1. ####包
    所有的.go 文件,除了空行和注释,都应该在第一行声明自己所属的包。
    每个包都在一个单独的目录里。 不能把多个包放到同一个目录中,
    也不能把同一个包的文件分拆到多个不同目录中。
    这意味着,同一个目录下的所有.go 文件必须声明同一个包名。
  2. 并不需要所有包的名字都与别的包不同, 因为导入包时是使用全路径的,
    所以可以区分同名的不同包
  3. 包被导入后会使用你的包名作为默认的名字,
    不过这个导入后的名字可以修改。
    这个特性在需要导入不同目录的同名包时很有用
  4. import 语句告诉编译器到磁盘的哪里去找想要导入的包
    eg:import f1 path1/file
    eg:import f2 path2/file
  5. import (
    f1 path1/file
    f2 path2/file
    )
  6. 一旦编译器找到一个满足 import 语句的包,就停止进一步查找。
    有一件重要的事需要记住,编译器会首先查找 Go 的安装目录,
    然后才会按顺序查找 GOPATH 变量里列出的目录。
  7. 所有导入的包必须被使用,户可能需要导入一个包,但是不需要引用这个包的标识符。
    在这种情况,可以使用空白标识符_来重命名这个导入,但是会执行该包的init()
  8. main 包:Go 语言的编译程序会试图把这种名字的包编译为二进制可执行文件。
    所有用 Go 语言编译的可执行程序都必须有一个名叫 main 的包。
  9. 当编译器发现某个包的名字为 main 时,
    它一定也会发现名为 main()的函数, 否则不会创建可执行文件。
    main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。
    程序编译时,会使用声明 main 包的代码所在的目录的目录名作为二进制可执行文件的文件名。
  10. 最佳实践:
    包名的惯例是使用包所在目录的名字,
    应该使用简洁、清晰且全小写的名字,这有利于开发时频繁输入包名
  11. ####init函数
    每个包可以包含任意多个init(),这些函数都会在程序执行开始的时候被调用
    所有被编译器发现的 init 函数都会安排在 main 函数之前执行。
    init()用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作
  12. 不能导入不使用的包,为此使用空白标识符重命名这个导入可以让 init
    函数发现并被调度运行,让编译器不会因为包未被使用而产生错误
  13. 多个包的init的函数执行顺序与栈执行顺序一致:先进后出,先导后执行
  14. ####Go命令
  15. go build . 命令会执行编译整个项目
    go build fileName 命令会执行编译单个文件
  16. go clean . 删除编译生成的可执行文件
  17. go vet main.go 检测代码的常见错误
  18. go fmt main.go 格式化代码

《Go语言实战》笔记之第三章 ----包的更多相关文章

  1. java并发编程实战笔记---(第三章)对象的共享

    3.1 可见性 synchronized 不仅实现了原子性操作或者确定了临界区,而且确保内存可见性. *****必须在同步中才能保证:当一个线程修改了对象状态之后,另一个线程可以看到发生的状态变化. ...

  2. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换 学习目标 理解如何用矩阵表示线性变换和仿射变换: 学习在 ...

  3. 《Go语言圣经》阅读笔记:第三章基础数据类型

    第三章 基础数据类型 Go语言将数据类型分为四类: 基础类型 数字 整数 浮点数 复数 字符串 布尔 复合类型 数据 结构体 引用类型 指针 切片 字典 函数 通道 接口类型 在此章节中先介绍基础类型 ...

  4. Kafka 权威指南阅读笔记(第三章,第四章)

    Kafka 第三章,第四章阅读笔记 Kafka 发送消息有三种方式:不关心结果的,同步方式,异步方式. Kafka 的异常主要有两类:一种是可重试异常,一种是无需重试异常. 生产者的配置: acks ...

  5. Java语言程序设计(基础篇) 第三章 选择

    第三章 选择 3.8 计算身体质量指数 package com.chapter3; import java.util.Scanner; public class ComputeAndInterpret ...

  6. 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析

    第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...

  7. JavaScript DOM编程艺术-学习笔记(第三章、第四章)

    第三章: 1.js的对象分为三种:①用户自定义对象 ② 内建对象(js提供的对象) ③宿主对象(js寄宿的环境-浏览器,提供的对象) 2.文档是由节点组成的集合,即dom树,html元素是根元素,是唯 ...

  8. 《深入理解Java虚拟机》读书笔记(第三章)

    垃圾收集器与内存分配策略(第三章) 前言,众所周知,Java是由c++进化而来,c++在内存需自己申请,自己释放,于是就有了Java的动态内存分配.书的第三章开篇,有这样一句话描述的很妙——Java与 ...

  9. Linux内核分析 读书笔记 (第三章)

    第三章 进程管理 3.1 进程 1.进程: 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程:执行 ...

随机推荐

  1. ConcurrentMap.putIfAbsent(key,value) 用法讨论

    ConcurrentMap.putIfAbsent(key,value) 用法讨论 http://wxl24life.iteye.com/blog/1746794

  2. python读写hdf5及cdf格式文件

    Python write and read hdf5 file http://stackoverflow.com/questions/20928136/input-and-output-numpy-a ...

  3. Prometheus exporter的Node exporter是可以独立安装,用来测试的

    现在慢慢在把prometheus operator的一些概念组织完整. https://github.com/coreos/prometheus-operator/tree/master/contri ...

  4. 使用 ceph 作为 openstack 的后端

    openstack 与 ceph 集成 在 ceph 上创建 openstack 需要的 pool. sudo ceph osd pool create volumes 128 sudo ceph o ...

  5. WCF+Windows2008&&sqlserver2008

    这些在我的文件和云盘当中也可以在csdn中查找

  6. NET/ASP.NET MVC Controller 控制器(一:深入解析控制器运行原理)

    阅读目录: 1.开篇介绍 2.ASP.NETMVC Controller 控制器的入口(Controller的执行流程) 3.ASP.NETMVC Controller 控制器的入口(Controll ...

  7. centos系统mysql数据库忘记密码重置方法(ERROR 1045 28000 Access denied...)

    当mysql的密码错误的时候,就会报如下这样的错误信息 解决方法如下: 首先输入mysqld_safe --skip-grant-tables 然后停止mysql服务,输入service mysqld ...

  8. leetcode7 Rerver Integer

    题意:数字反转 思路:醉了,提交了好几次,难点不在于怎么反转,而是判断是否益处,原题中给的是int,4个字节,32位,开始不知道怎么判断.现在知道了是limits.h中的INT_MIN和INT_MAX ...

  9. Xamarin开发安装Visual Studio 2015 update2报错的解决办法

    Xamarin开发安装Visual Studio 2015 update2报错的解决办法错误信息:update 2 requires a member of the visual studio 201 ...

  10. [BZOJ 2427] 软件安装

    Link: BZOJ 2427 传送门 Solution: 只看样例的话会以为是裸的树形$dp$…… 但实际上题目并没有说明恰好仅有一个物品没有依赖项 因此原图可能由是由多棵树与多个图组成的 先跑一遍 ...