Golang 学习(二)
关键字、标识符
25 个保留关键字:
break | default | func | interface | select |
case | defer | go | map | struct |
chen | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
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 | println | real | |
recover | string | TRUE | uint | uint8 | unitprt |
注释
跟 javascript 的注释相同
单行注释
//
多行注释
/*
*/
go 文件基础结构
//程序所属包,每个go文件必须有这行,且必须为文件中第一行代码,
//包名可改变,但项目入口包名得是main
package mian
//导入依赖包
import "fmt"
//定义常量
const NAME string="jon"
//全局变量的定义与赋值
var hello string = "hello word"
//一般类型声明,用于复用类型声明,如复杂数据类型
type hahaInt int
//结构的声明
type haha struct {
}
//声明接口
type haha interface{
}
//函数定义
func handle() {
fmt.Println("hhh")
}
//main函数,生成可执行文件时,入口文件中必须有的函数
func main() {
fmt.Println("hhh")
}
Package
- package 是最基本的分发单位和工程管理中依赖关系的体现;
- 每个 GO 语言源代码文件开头都拥有一个 package 声明,表示源代码文件所属代码包;
- 要生成 GO 语言可执行程序,必须要有 main 的 package 包,且必须在该包下有 main()函数;
- 同一个目录路径下只能存在一个 package,一个 package 可以拆成多个源文件组成;即同一级目录下的 go 源文件的 package name 必须相同;
Import
可以导入源代码文件中所依赖的 package 包;
不能导入源代码文件中没有使用的包,会出现错误;
两种使用方式:
//第一种
import "package1"
import "package2"
import "package3"
//第二种
import (
"package1"
"package2"
"package3"
)
import 的执行顺序
如果一个 main 导入其他包,包将被顺序导入;
如果导入的包中依赖其他包(包 B),会首先导入包 B,然后初始化包 B 中的常量和全局变量,最后如果包 B 中有 init 函数,则会自动执行 init 函数;
所有的依赖包导入完成后才会对 main 中的常量和全局变量进行初始化,然后执行 main 中的 init 函数(如果存在),最后执行 main 函数;
如果一个包被导入多次则该包只会被导入一次;如在 main 中导入 B 包、C 包,在 B 包中又导入了 C 包,则 C 包只会被导入一次;
import别名,".","_"
别名:将导入的包命名为另一个容易记的别名;如将fmt包别名为xixi:
import xixi "fmt"
import (
xixi "fmt"
)
".":省略前缀包名,如直接使用fmt包的Println方法:
import . "fmt"
func main(){
Println("haha")
}
"_":导入该包,但是不导入整个包,而是执行该包中的init函数,因此不能使用包名来调用包中的其他函数。
package pkg1
import "fmt"
func init(){
fmt.Println("pkg1")
}
func Handle(){}
package main
import _ "pkg1"
//无法调用pkg1.Handle(),且命令执行 go run mian.go后会直接打印 “pkg1”
func main(){}