注:本文搬运了一些我青训营期间听课的笔记(我一般直接用注释或者记笔记本上),不保证正确性,而且有些地方可能比较乱,大家看个乐就行了。
基础语法部分
Hello World
从这个实例中我们可以看到一个用go语言写的程序所需具备的基本要素。
如果要直接运行,可以在命令行里> go run ...
如果要编译为二进制,则在命令行里> go build ... 完成后> ./main 运行
package main // 入口包/入口文件
import (
"fmt" // 主要用于格式/字符串
)
func main() {
fmt.Println("hello world") // 没有分号
}
变量与常量的定义
这里主要介绍了go里两种主要的变量声明方式(见第10行和第19行),可以看到在这两种变量的声明方式中,变量类型都是可省略的(如果省略则根据上下文自动推断)。这点虽然听起来有点不严谨,但是在后面的实操中可以带来不少便利,因为乱七八糟的变量类型太多了,每个都要写出来很麻烦(而且有些一下子甚至都说不上来)。
go为强类型语言,每个变量都有自己的变量类型。其中字符串是内置类型,可通过+直接拼接,也可用=比较两个字符串。
这里既然说到了变量,那就顺便说一下零值(变量的默认值)。当一个变量被赋予了内存(如被声明),但没有被显式地初始化,此时系统会给予该变量一个默认的初始值(零值)。具体可以参考这篇文章。
package main
import (
"fmt"
"math"
)
func main() {
var a = "initial"
// 变量声明方式1:var 变量名 (变量类型) = 值
var b, c int = 1, 2 // 有两个变量就必须要有两个值,否则语法错误
var d = true
var e float64
f := float32(e)
// 变量声明方式2:变量名 := (变量类型)值
g := a + "foo"
fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
fmt.Println(g) // initialfoo
const s string = "constant" // 常量的声明把var改为const即可
const h = 500000000 // 常量可以根据上下文自动确定类型
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
咦?这么快1200+了?那今天的牙膏就挤到这里了