【知识点】
一、特点
- 高性能、高并发:Go天生支持并发编程,通过goroutine和channel实现。goroutine是轻量级线程,可以在单个程序中同时执行多个任务。channel是用于goroutine之间通信的管道。
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完整的工具链
- 静态链接:Go是一种静态类型语言,需要在声明变量时指定类型。这可以帮助开发者在编译时捕获一些错误。
- 快速编译
- 跨平台:Go可以编译成多个平台上的可执行文件
- 垃圾回收
今天老师讲的有点快我来梳理整理一下语法知识点
【梳理分析】
1. Go代码基本框架
go
`package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, world!")
}
2. Go语言变量的规则
- 变量名必须以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。
- 变量声明使用关键字 var,后面跟变量名和类型,例如 var x int。
- 变量可以在声明时初始化,例如 var x int = 10,也可以在后面的代码中初始化,例如 x := 10。(也可以使用短变量声明语法 :=,这样编译器会自动推断变量类型噢:)
- 变量的类型可以省略,编译器会根据变量的值推断类型,例如 x := 10。
- 变量可以被重新赋值,但必须是相同类型的值。
3. if for switch的语法具体框架
if 语句
if 语句用于判断一个条件是否成立,如果成立就执行一段代码块。if 语句的语法格式如下:
如果有多个条件需要判断,可以使用 if- else if -else 语句:
go
if xx {
执行1
}
else if xy{
执行2
}
else {
执行3
}
for 循环
for 循环用于重复执行一段代码块,直到循环条件不成立为止。for 循环的语法格式如下: ` for initialization; condition; post
go
for initialization; condition; post{
// 在每次循环中执行这里的代码块
}
其中,initialization 是循环变量的初始化语句,condition 是循环条件,post 是每次循环后执行的语句。这三个部分都可以省略,例如:
go
for i := 0; i < 10; i++
{
// 执行这里的代码块10次
//可用return 或者break离开;
}
switch 语句
switch 语句根据一个表达式的值,执行多个可能的分支中的一个。switch 语句的语法格式如下:
go
switch expression {
case value1:
case value2:
default:
}
4.数组 切片 结构体
数组
数组是一组固定长度的数据项,它们具有相同的类型。数组的长度是在声明时指定的,不能更改。数组的语法格式如下:
go
var arr [n]type
其中,n 表示数组的长度,type 表示数组中元素的类型。
go
a[0] = 10 // 给第一个元素赋值为10
fmt.Println(a[0]) // 输出第一个元素的值
切片
切片是一个动态数组,它可以根据需要自动增长或缩小。切片是一个引用类型,它底层引用了一个数组,并且可以重新分配底层数组的大小。切片的语法格式如下:
go
var slice []type
可以使用内置函数 make 来创建一个切片,并指定其长度和容量,例如:
go
s := make([]int, 5, 10) // 创建一个长度为5、容量为10的整数切片
可以使用下标访问切片中的元素,下标从0开始,例如:
go
s[0] = 10 // 给第一个元素赋值为10
fmt.Println(s[0]) // 输出第一个元素的值
可以使用内置函数 append 向切片中添加元素:
go
s = append(s, 20) // 向切片中添加一个元素
结构体
结构体是一组有序的数据项,每个数据项可以是不同类型的值。结构体的语法格式如下:
go
type structName struct {
field1 type1
field2 type2
...
}
其中,structName 表示结构体的名称,field1、field2 等表示结构体中的字段名,type1、type2 等表示字段的类型。
5.函数 指针
函数
函数是一段可重用的代码块,它接收一些输入参数,并返回一个输出结果。函数的语法格式如下:
go
func function_name(parameter_list) return_type {
// 在这里编写函数体
}
func add(x int, y int) int {
return x + y
}
func sayHello(name string) {
fmt.Println("Hello, " + name + "!")
}
其中,function_name 是函数的名称,parameter_list 是函数的参数列表,return_type 是函数的返回值类型。
指针
指针是一个变量,它存储了一个变量的内存地址。可以使用 & 运算符获取一个变量的地址,例如:
go
x := 10
p := &x // 获取变量 x 的地址
fmt.Println(*p) // 输出变量 x 的值
x := 10 p := &x // 获取变量 x 的地址 可以使用 * 运算符获取一个指针指向的变量的值。
个人思考
虽然感觉go和之前学的语言差不多,但是自己整理梳理好知识点会使新学的知识印象更加的深刻。条理清晰,到时候忘记了还能回来看看,今天是上课的第一天,虽然有点跟不上,(因为老师很多知识是一笔带过)需要我们课下再看文章补补知识。毕竟我们这个专业还是讲实战比较重要,了解基本知识后,跟着老师代码走走会熟悉些
入门建议
听课之余一定要去整理一下go语言语法的基础框架,这样方便自己写代码,忘记格式还可以回来看看,效率会高点。
先了解 Go 语言的基本语法和特性,例如变量、数据类型、流程控制(for if)和函数等。这些基础知识是学习 Go 语言的基础,也是后续学习的必备条件。
另外,建议多做一些实践和练习!