Go 学习笔记(二)- 程序结构

本章介绍了命名,关键词,声明,赋值,类型,包,作用域等概念,但主要介绍的只是程序结构和声明。

命名

Go 变量区分大小写 字母或下划线开头,推荐 驼峰式 命名,在一个包里,变量,常量,函数首字母大写,它将是导出的,例如fmt包的Printf函数就是导出方法。

关键词

Go 语言中有25个关键词:

1
2
3
4
5
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 有30多个预定义的名字的内建常量、类型和函数。

1
2
3
4
5
6
7
8
9
10
11
内建常量: true false iota nil

内建类型: int int16 int32 int64 int8
uint uint16 uint32 uint64 uint8 uintptr
float32 float64 complex128 complex64
bool byte error rune string
ComplexType FloatType IntegerType Type Type1

内建函数: make len cap new append copy close delete
complex real imag panic recover
print println

这里列出的比 go圣经 里多了几个类型和函数,不知道什么时候加的,具体查看官方文档

声明

目前就4个关键词用于声明,var 变量声明,const 常量声明,type 类型声明,func 函数声明。

变量

变量声明的一般语法如下:

1
var 变量名字 类型 = 表达式

其中 “类型” 或 “= 表达式” 两个部分可以省略其中的一个。

1
2
3
var a int = 1 // 声明int型并初始化为 1
var b int // 声明int型,默认初始值为 0
var c = 2 // 根据值类型声明为int型初始化为 2

简短变量声明

语法:名字 := 表达式
变量类型根据表达式值自动推导。
要特别注意 := 是声明,= 是赋值,不能搞混。

1
2
3
a := 1
b := "str"
c := a+1

指针

其实也差不多,但是这里的指针比 c 的简单太多了,跟 php 的取地址差不多。

1
2
3
x := 1
p := &x
*p = 2

赋值

亮点在于可以同时赋值多个,函数也可以返回多个值,叫做 元组赋值。

1
2
变量 = 值
元组赋值 x, y = y, x

类型

语法:type 类型名字 底层类型

1
2
type Celsius float64    // 摄氏温度
type Fahrenheit float64 // 华氏温度

为什么声明类型?
除了可以意义化描述之外,还可以为自定义类型绑定方法(原生类型不可以)。

具体以后研究..

作用域

这个貌似跟 es6 类似,块级作用域,没一个 {} 中都是独立的域。。

小结

在这里看到了 es6,php 的影子,相对而言语法还是比较简单易学的。
继续加油。。