这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
Go语言设计目标为适应网络和多核时代的编程语言。由于其天然支持高性能、高并发,语法简单、学习曲线平缓,具有丰富的数据库,完善的工具链,静态链接,编译迅速,跨平台,垃圾回收性能高等原因,在web开发中具有明显优势。
1.数据类型
数据类型用于声明函数和变量。 Go有布尔,数字,字符串和其他派生类型。
1.1 定义变量
代码中提供了var identifier typeame格式的变量定义方法。(未标明类型时自动Go会自动匹配类型)
:=声明变量更加快捷
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo"
str := string("234")
fmt.Println(a, b, c, d, e, f, str) // initial 1 2 true 0 0
fmt.Println(g) // initialapple
const s string = "constant"
const h = 500000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
若数值类型未初始化则为0,字符串为""(空串),布尔类型为false,引用类型为nil。 Go也支持多类型相同变量声明。
1.1.1匿名变量
匿名变量的特点是一个下画线_,这本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。
1.2 指针
Go中指针多用于修改数据值,&用于取址,*用于指定变量是作为一个指针。
空指针nil表示一个指针没有分配到任何变量,与其他语言的null一样。
语言的掌握要靠运用,熟能生巧。