Go语言入门指南:基础语法和常用特性|青训营

124 阅读3分钟

这是我参与「第六届青训营」伴学笔记创作活动的第 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,变量,语句和实践,我相信在之后的学习中肯定会运用地更加熟练