【知识点】 一、特点
高性能、高并发:Go天生支持并发编程,通过goroutine和channel实现。goroutine是轻量级线程,可以在单个程序中同时执行多个任务。channel是用于goroutine之间通信的管道。 语法简单、学习曲线平缓 丰富的标准库 完整的工具链 静态链接:Go是一种静态类型语言,需要在声明变量时指定类型。这可以帮助开发者在编译时捕获一些错误。 快速编译 跨平台:Go可以编译成多个平台上的可执行文件
【基础代码】
- 所有语言的开始 Hello World! package main import ( "fmt" ) func main() { fmt.Println("Hello, world!") }
- 变量名的规则 变量名必须以字母或下划线开头,后面可以跟任意数量的字母、数字或下划线。 变量声明使用关键字 var,后面跟变量名和类型,例如 var x int。 变量可以在声明时初始化,例如 var x int = 10,也可以在后面的代码中初始化,例如 x := 10。(也可以使用短变量声明语法 :=,这样编译器会自动推断变量类型噢:) 变量的类型可以省略,编译器会根据变量的值推断类型,例如 x := 10。 变量可以被重新赋值,但必须是相同类型的值。
- if、for、switch的语法 ①if 语句 if 语句用于判断一个条件是否成立,如果成立就执行一段代码块。if 语句的语法格式如下: 如果有多个条件需要判断,可以使用 if- else if -else 语句:
if xx { 执行1 }
else if xy{ 执行2 }
else { 执行3 }
②for 循环
for 循环用于重复执行一段代码块,直到循环条件不成立为止。for 循环的语法格式如下:
for initialization; condition; post{
// 在每次循环中执行这里的代码块
}
其中,initialization 是循环变量的初始化语句,condition 是循环条件,post 是每次循环后执行的语句。这三个部分都可以省略,例如:
for i := 0; i < 10; i++ { // 执行这里的代码块10次 //可用return 或者break离开; } ③switch 语句 switch 语句根据一个表达式的值,执行多个可能的分支中的一个。switch 语句的语法格式如下:
switch expression { case value1:
case value2:
default:
} 4.数组 切片 结构体 ①数组 数组是一组固定长度的数据项,它们具有相同的类型。数组的长度是在声明时指定的,不能更改。数组的语法格式如下:
var arr [n]type 其中,n 表示数组的长度,type 表示数组中元素的类型。
a[0] = 10 // 给第一个元素赋值为10 fmt.Println(a[0]) // 输出第一个元素的值 切片 切片是一个动态数组,它可以根据需要自动增长或缩小。切片是一个引用类型,它底层引用了一个数组,并且可以重新分配底层数组的大小。切片的语法格式如下:
var slice []type 可以使用内置函数 make 来创建一个切片,并指定其长度和容量,例如:
s := make([]int, 5, 10) // 创建一个长度为5、容量为10的整数切片 可以使用下标访问切片中的元素,下标从0开始,例如:
s[0] = 10 // 给第一个元素赋值为10 fmt.Println(s[0]) // 输出第一个元素的值 可以使用内置函数 append 向切片中添加元素:
s = append(s, 20) // 向切片中添加一个元素 ②结构体 结构体是一组有序的数据项,每个数据项可以是不同类型的值。结构体的语法格式如下:
type structName struct { field1 type1 field2 type2 ... } 其中,structName 表示结构体的名称,field1、field2 等表示结构体中的字段名,type1、type2 等表示字段的类型。
5.函数 指针 ①函数 函数是一段可重用的代码块,它接收一些输入参数,并返回一个输出结果。函数的语法格式如下:
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 是函数的返回值类型。
②指针 指针是一个变量,它存储了一个变量的内存地址。可以使用 & 运算符获取一个变量的地址,例如:
x := 10 p := &x // 获取变量 x 的地址 fmt.Println(*p) // 输出变量 x 的值
x := 10 p := &x // 获取变量 x 的地址 可以使用 * 运算符获取一个指针指向的变量的值。
个人思考 整体来看Go语言与其他语言差别不大,有很多相同之处目前基本框架和代码学习起来还没有难度。以后多做项目实战来提升自己的能力。