Go 语言入门指南1 |青训营

83 阅读3分钟

这是 Go 语言学习记录系列的笔记1,快来跟我一起学习Go 的基础语法吧 Go神! 启动!

Go 语法解析和与 CPP 的对比

Go语使用包(package)这种语法元素赖组织源码,所有语法可见性均定义在package这个级别,与Java,python等语言相比,没有创新,但是比c的include先进的多。 Go语言的源码复用建在包(package)的基础之上,包通过package,import,还有GOPATH,MOD等操作完成。 程序从 main 包开始运行。类似 CPP 的 include引入头文件,通过"import"导入 "fmt" 和 "math/rand" 来使用这两个包。按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始

package main

import (
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("My favorite number is", rand.Intn(10))
}

分组导入

此代码用圆括号组合了导入的包,是“分组”形式的导入语句。

import (
	"fmt"
	"math/rand"
)

也可以不分组

import "fmt"
import "math"

使用分组导入语句是更好的形式

导出名

在 Go 中,大写字母开头的名字就是已导出的。例如,Pizza 就是个已导出名,Pi 也同样,它导出自 math 包。而小写字母pizza 和 pi 并未以大写字母开头,所以它们是未导出的。 在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问。

函数

函数,和 cpp 函数是一样的,可以接收0个或多个参数;同样也可以有多个返回值,比 cpp 的单返回值方式更加简单 注意类型在变量名 之后

func addAndSub(x int, y int) (int,int) {
	return x + y, x - y
}

当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略 比如

x int, y int

可以缩写为

x, y int

这也体现了 go 语法的简洁高效 Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。

var

var 语句用于声明一个变量列表(多个变量),跟函数的参数列表一样,类型在最后 变量声明可以包含初始值,每个变量对应一个 如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型 在函数内部,简洁赋值语句 := 可在类型明确的地方代替 var 声明。 函数外的每个语句都必须以关键字开始(varfunc 等等),因此 := 结构不能在函数外使用

Reader

io 包指定了 io.Reader 接口,它表示从数据流的末尾进行读取。

Go 标准库包含了该接口的许多实现,包括文件、网络连接、压缩和加密等等。

io.Reader 接口有一个 Read 方法:

func (T) Read(b []byte) (n int, err error)

Read 用数据填充给定的字节切片并返回填充的字节数和错误值。在遇到数据流的结尾时,它会返回一个 io.EOF 错误。