go语言第三天

threeyax · · 1800 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

第4章:基本结构和基本数据类型

go的源文件是以.go结尾,文件名不能包含空格和其它特殊字符,不过可以用_下划线

 

代码区分大小写也没什么好说的,来记下标识符的注意事项

有效的标识符必须以字符(可以使用任何 UTF-8 编码的字符或 _ )开头,然后紧跟着 0 个或多个字符或 Unicode 数字

比如:X56,group1,_x23,i,өԑ12

 

几个不行的例子

以下是无效的标识符:

1ab(以数字开头),case( Go 语言的关键字),a+b(运算符是不允许的)

 

go的25个关键字或保留字

 

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

 

go还有36个预定义标识符,代表一些基本类型和函数

 

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

 

包的概念、导入与可见性

每个 Go 文件都属于且仅属于一个包,并且在源文件中非注释的第一行指定包名,几个go文件可以在一个包中,因些包名和文件名也不用相同,

main包比较特殊  package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包

 

go的编译过程比较特别

Go 中的包模型采用了显式依赖关系的机制来达到快速编译的目的,编译器会从后缀名为 .o 的对象文件(需要且只需要这个文件)中提取传递依赖类型的信息。

如果 A.go 依赖 B.go,而 B.go 又依赖 C.go

  • 编译 C.go, B.go, 然后是 A.go.
  • 为了编译 A.go, 编译器读取的是 B.o 而不是 C.o.

这种机制对于编译大型的项目时可以显著地提升编译速度。

 

可以通过import关键字来导入一个包,使用方式有以下几种

import "fmt"

import "os"

 

import "fmt"; import "os"

 

import (   

 "fmt" 

   "os"

)

 

import ("fmt", "os")

 

注意,如果包名不是以.或/开头,go会重全局文件中查找,如“fmt”,“aaa/bbb”如果以./开头,go会在相对目录中查找,如果只以/开头会重绝对路径中查找

 

go的可见性规则相当简单 ,如果以大写字母开头(函数,变量等 ),则其它包可见,小写则相当于该包私有吧

 

导入包时也可以起别名哦  如:import fm "fmt"  则后面可以用fm来当fmt了

 

声名在import后的变量是包的全局变量

 

 

这里又讲解了go的函数,类型和注释,也挺简单 觉得没有什么 好记的了,因为用的多了,看起来就理所当然了

不过有几点可以注意下:

1.go不允许隐式的类型转换,

2.Go 程序的执行(程序启动)顺序如下:

  1. 按顺序导入所有被 main 包引用的其它包,然后在每个包中执行如下流程:
  2. 如果该包又导入了其它的包,则从第一步开始递归执行,但是每个包只会被导入一次。
  3. 然后以相反的顺序在每个包中初始化常量和变量,如果该包含有 init 函数的话,则调用该函数。
  4. 在完成这一切之后,main 也执行同样的过程,最后调用 main 函数开始执行程序。

 

 

 


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:threeyax

查看原文:go语言第三天

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1800 次点击  
加入收藏 微博
1 回复  |  直到 2000-01-01 00:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传