这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
一、Hello World
示例代码:
package main
import (
"fmt"
)
func main(){
fmt.Println("Hello world")
}
运行方式:
go build file_name.go
.\file_name.exe
go run file_name.go
解读:
-
第一行定义了测试代码所属的包为
main在Go语言中,所有go文件都属于某个包(Package)
-
接下来导入了标准库
fmt包,用于将字符串输出到屏幕上 -
main函数是Go程序的入口,没有参数和返回值
二、基础语法
1、变量
Go语言是一门静态语言,所以需要在使用变量前声明类型
Go语言的变量声明主要有两种:
-
通用格式:
var a int = 10var :变量声明关键字
a :变量名
int :数据类型
10 :初值
此外,数据类型可以省略,通过初值自动推导
var a = 10 -
短变量声明
a := 10连var关键字也省略了,是Go的一个语法糖,但是只能用于局部变量声明
2、控制结构
- Go语言中,if语句后没有括号,并且必须带大括号
if i > 0 { fmt.Println("i is greater than 0") } - Go语言中只有for循环
for i := 0; i < 5; i++ { fmt.Println(i) } - Go语言中,switch case不需要单独加
break
3、数组和切片
数组就是一个具有编号且长度固定的元素序列
var a [5]int
对于数组,可以方便地通过索引存取元素,并且可以直接打印一个数组;但其长度固定,所以在实际业务中更常用切片
切片可通过make创建,通过append追加元素
s := make([]string, 1)
s[0] = "a"
s = append(s, "b")
切片支持类似Python的slice操作,但不支持负数索引
4、map
字典,通过make创建
m := make(map[string]int)
m["one"] = 1
5、函数
格式:func + 函数名 + 参数列表 + 返回值列表 + 大括号 + 函数体
func add(a int, b int) int {
return a + b
}
6、指针
类似C/C++中的指针,但支持的操作有限,主要用来对传入参数进行修改
7、结构体&结构体方法
带类型的字段集合
type user struct {
name string
password string
}
在Go语言中,可以为结构体定义一些方法,类似“类成员函数”
func (u *user) resetPwd(pwd string) {
u.password = pwd
}
带指针和不带指针的区别:调用该函数时是否将操作应用到调用实例上
Ref:
字节跳动青训营 - Go语言上手-基础语言
百度百科 - golang