这是我参与「第六届青训营」伴学笔记创作活动的第 1 天,因为之前没有学过go语言,参加了青训营才接触的,所以我将首先对go语言的基础语法和知识进行一些梳理。
本期目录
- hello world
- 变量
- 控制语句
- 实践
简介: Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。Go语言提供的工具都通过一个单独的命令 go 调用, go 命令有一系列子命令。
Hello world
我们以最简单的hello world为例:
package main//这个文件属于main包的一部分
import "fmt" //往屏幕输入输出字符串、格式化字符串
func main() {
fmt.Println("hello world!")
}
Go语言的代码通过包(package)组织,包类似于其它语言里的库(libraries)或者模块(modules)。一个包由位于单个目录下的一个或多个.go源代码文件组成,目录定义包的作用。
Go的标准库提供了100多个包,以支持常见功能,如输入、输出、排序以及文本处理。
fmt 包含有格式化输出、接收输入的函数。Println 是其中一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。
变量
var声明语句可以创建一个特定类型的变量,然后给变量附加一个名字,并且设置变量的初始值。变量声明的一般语法是:
var 变量名字 类型 = 表达式
其中“类型”或“= 表达式”两个部分可以省略其中的一个。如果省略的是类型信息,那么将根据初始化表达式来推导变量的类型信息。如果初始化表达式被省略,那么将用零值初始化该变量。
也可以直接用以下的方式来表达:
变量 := 值
var a = "initial"
var b, c int = 1, 2
var d =true
var e float64
f :=float32(e)
数值类型变量对应的零值是0,布尔类型变量对应的零值是false,字符串类型对应的零值是空字符串,接口或引用类型(包括slice、map、chan和函数)变量对应的零值是nil。
控制语句
for循环
Go语言只有for循环这一种循环语句。for循环三个部分不需括号包围。大括号强制要求, 左大括号必须和post语句在同一行。
例如:
for t := 0.0;t < cycles*2*math.Pi;t += res {
x := math.Sin(t)
y := math.Sin(t*freq + phase)
img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5), blackIndex)
}
循环中也可以用break跳出
switch语句
这里是一个简单的switch的例子:
switch coinflip() {
case "heads":
heads++
case "tails":
tails++
default:
fmt.Println("landed on edge!")
}
和其它语言中的break和continue一样,break会中断当前的循环,并开始执行循环之后的内容,而continue会中跳过当前循环,并开始执行下一次循环。
实践
生成随机数
需要用到math/rand包和time包,先导入FMT 包和和 math/rand 包,定义一个变量,max_num是100,用rang.Intn 来生成个随机数,再打印出这个随机数,而time包的作用是在程序启动的时候,用启动的时间戳来初始化随机数种子。
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.PrintIn("The secret number is ", secretNumber)
}
总结:因为篇幅的原因第一篇就总结了几个常用的语法和实践,这是我第一次用go语言写代码,所以还不太熟悉,今天学习了hello world,变量,语句和实践,我相信在之后的学习中肯定会运用地更加熟练