“_”标识符

_ 本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。

包的概念

包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 .go 为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package mainpackage main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。一个应用程序可以包含不同的包,而且即使你只使用 main 包也不必把所有的代码都写在一个巨大的文件里:你可以用一些较小的文件,并且在每个文件非注释的第一行都使用 package main 来指明这些文件都属于 main 包。

可以通过使用包的别名来解决包名之间的名称冲突,或者说根据你的个人喜好对包名进行重新设置,如:import fm "fmt"

 package main

 import fm "fmt" // alias3

 func main() {
fm.Println("hello, world")
}

如果你导入了一个包却没有使用它,则会在构建程序时引发错误,如 imported and not used: os,这正是遵循了 Go 的格言:“没有不必要的代码!“。

函数

main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。如果你的 main 包的源代码没有包含 main 函数,则会引发构建错误 undefined: main.main。main 函数既没有参数,也没有返回类型(与 C 家族中的其它语言恰好相反)。如果你不小心为 main 函数添加了参数或者返回类型,将会引发构建错误:

func main must have no arguments and no return values results.

左大括号 { 必须与方法的声明放在同一行,这是编译器的强制规定,否则你在使用 gofmt 时就会出现错误提示:

`build-error: syntax error: unexpected semicolon or newline before {`

程序正常退出的代码为 0 即 Program exited with code 0;如果程序因为异常而被终止,则会返回非零值,如:1。这个数值可以用来测试是否成功执行一个程序。

go程序的实行顺序

1、在完成包的 import 之后,开始对常量、变量和类型的定义或声明。

2、如果存在 init 函数的话,则对该函数进行定义(这是一个特殊的函数,每个含有该函数的包都会首先执行这个函数)。

3、如果当前包是 main 包,则定义 main 函数。

4、然后定义其余的函数,首先是类型的方法,接着是按照 main 函数中先后调用的顺序来定义相关函数,如果有很多函数,则可以按照字母顺序来进行排序。

本文参考自:

https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook

最新文章

  1. OCP考点实战演练02-日常维护篇
  2. runv nslistener源码分析
  3. three.js初涉略(一)
  4. [转载]http协议 文件下载原理及多线程断点续传
  5. 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件
  6. php 生日提醒程序
  7. 使用js给页面显示的图片添加水印效果
  8. 《CSS3秘笈》备忘录
  9. URAL 1780 G - Gray Code 找规律
  10. VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
  11. poj 2342 Anniversary party 树形DP入门
  12. (搬运工)国内顺利使用Google的另类技巧
  13. 【git】error: Your local changes to the following files
  14. JS面向对象基础2
  15. 浅谈 qmake 之 shadow build
  16. Egret学习笔记 (Egret打飞机-4.添加主角飞机和实现飞行效果)
  17. 用Gogs在Windows上搭建Git服务
  18. MT【327】两道不等式题
  19. 基于IdentityServer4 实现.NET Core的认证授权
  20. Spark Standalone spark-default.conf

热门文章

  1. c#中的??运算符
  2. android 监控软键盘确定 搜索 按钮并赋予点击事件
  3. [Java]在窗口界面上画出硬盘中图片文件
  4. 重写alert方法完成类似gmail的友好提示
  5. centos使用密钥替换密码登录服务器
  6. TensorFlow------读取二进制文件实例
  7. Jupyter Notebook 快捷键
  8. Android媒体扫描详细解析之一(MediaScanner & MediaProvider)
  9. g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system
  10. 一个简单的int型C++单链表的实现