Golang 学习(二)

发布于2023-11-07 23:10:05字数8

关键字、标识符

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 print 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

  1. package 是最基本的分发单位工程管理中依赖关系的体现
  2. 每个 GO 语言源代码文件开头都拥有一个 package 声明,表示源代码文件所属代码包;
  3. 要生成 GO 语言可执行程序,必须要有 main 的 package 包,且必须在该包下有 main()函数;
  4. 同一个目录路径下只能存在一个 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(){}

评论

back top