2.程序结构
- 命名
- 声明
- 变量
- 赋值
- 类型
- 包和文件
- 作用域
这一章对于新手来说是很重要的,但是对于有其他语言基础的朋友来说还是很轻松的。
命名的时候要注意必变如下关键词:
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
内部预先定义可以自己重新定义,但是为了不引起歧义,还是慎重一点好。
内建常量: true false iota nil
内建类型: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
内建函数: make len cap new append copy close delete
complex real imag
panic recover
声明语句:有四种
var | const | type | Cool |
---|---|---|---|
变量 | 常量 | 类型 | 函数实体对象 |
var使用方法:
方法 | 示例 |
---|---|
var 变量名字 类型 = 表达式 | var name string = “Tom” |
var name | |
var name = “Tom” | |
var name, age = “tom”, 18 | |
简短声明变量 | name := “Tom” |
const变量名字 类型 = 表达式 | const name string = “tom” |
type 类型名字 底层类型 | type name string |
函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 | func name(parameter-list) (result-list) {body} |
此外,go语言中还保留了指针。指针是一个指向地址的变量。
name := "tom"
p := &name
fmt.Println(p)
fmt.Println(*p)
输出的结果是:
0xc042008310 //这个是p,由于指向的就是地址,所以直接打印出来就是地址
tom //这个就是地址上对应的值
赋值操作:还是使用=
,有个特别的地方:
x, y = y, x //这个操作会互换两个变量的值,就是说右边的值一次拿到,再赋值给左边
包和文件:golang的包和文件与很多其他语言的概念差不多,目的都是为了支持模块化、封装、单独编译和代码重用。
文件夹下面的所有文件的包名可以不是文件夹的名字,但是必须一直。
声明包名 | package main |
---|---|
导入包 | import “fmt” |
go的作用域也与其他语言相同,需要注意的是:=会重新定义内部变量。