这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
基础语法
Go 程序的一般结构: basic_structure.go
package main
// 导入其他包
import . "fmt"
// 常量定义
const PI = 3.14
// 全局变量的声明和赋值
var name = "gopher"
// 一般类型声明
type newType int
// 结构的声明
type gopher struct{}
// 接口的声明
type golang interface{}
// 由main函数作为程序入口点启动
func main() {
Println("Hello World!")
}
go 1.9版本对于数字类型,无需定义int及float32、float64,系统会自动识别。
package main
import "fmt"
func main() {
var a = 1.5
var b =2
fmt.Println(a,b)
}
## 运行结果 1.5 2
注:局部变量声明后必须被使用,否则会抛出异常declared but not used.全局变量是允许声明但不使用的。 同一类型的多个变量可以声明在同一行。
指针和引用
变量是一种使用方便的占位符,用于引用计算机内存地址。
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
&:返回变量存储地址,&a将给出变量的实际地址
*:指针变量,*a是一个指针变量
一个变量指向内存中值所在的内存地址,我们称这个变量为指针类型。
func main() {
var num int = 1
//类型前加 * 表示这是指针类型,指针类型的初始值为nil ,和其他语言的NUll,None一样
var ptr *int
fmt.Println("ptr 指针初始值:",ptr)
// & 表示获取num 变量的内存地址。 因为ptr 是指针,指向的是内存地址,所以需要赋值操作的是内存地址
ptr = &num
fmt.Println("ptr 指针的值:", ptr)
//*取指针内存地址所指向的值
fmt.Println("*ptr 指针的值:", *ptr)
*ptr = 2
fmt.Println("*ptr 指针更新后的值:", *ptr)
fmt.Println("原变量num的值:", num)
}
注:空指针,当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针。nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。
Ref:
字节跳动青训营 - Go语言上手-基础语言
百度百科 - golang