The Way to Go读书笔记_第4章_基本结构和基本数据类型
“_”标识符
_
本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。
包的概念
包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 .go
为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main
。package 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
最新文章
- OCP考点实战演练02-日常维护篇
- runv nslistener源码分析
- three.js初涉略(一)
- [转载]http协议 文件下载原理及多线程断点续传
- 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件
- php 生日提醒程序
- 使用js给页面显示的图片添加水印效果
- 《CSS3秘笈》备忘录
- URAL 1780 G - Gray Code 找规律
- VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
- poj 2342 Anniversary party 树形DP入门
- (搬运工)国内顺利使用Google的另类技巧
- 【git】error: Your local changes to the following files
- JS面向对象基础2
- 浅谈 qmake 之 shadow build
- Egret学习笔记 (Egret打飞机-4.添加主角飞机和实现飞行效果)
- 用Gogs在Windows上搭建Git服务
- MT【327】两道不等式题
- 基于IdentityServer4 实现.NET Core的认证授权
- Spark Standalone spark-default.conf
热门文章
- c#中的??运算符
- android 监控软键盘确定 搜索 按钮并赋予点击事件
- [Java]在窗口界面上画出硬盘中图片文件
- 重写alert方法完成类似gmail的友好提示
- centos使用密钥替换密码登录服务器
- TensorFlow------读取二进制文件实例
- Jupyter Notebook 快捷键
- Android媒体扫描详细解析之一(MediaScanner &; MediaProvider)
- g++编译问题:skipping incompatible /usr/lib//libboost_system.so when searching for -lboost_system
- 一个简单的int型C++单链表的实现