获得徽章 0
- #青训营 x 字节后端训练营#
1. 变量声明和赋值
Go 语言中的变量声明使用 var 关键字,例如:
var a int
a = 10
也可以一步完成变量声明和赋值:
var b string = "hello"
c := true
2. 常量声明
常量使用 const 关键字声明,一旦声明后不可更改值。例如:
const pi = 3.1415926
3. 控制语句
Go 语言中支持 if、for 和 switch 等控制语句。例如:
if a > 10 {
// do something
}
for i := 0; i < 10; i++ {
// do something
}
switch x {
case 1:
// do something
case 2:
// do something
default:
// do something
}
4. 数组和切片
数组和切片都可以用于存储多个元素,但数组长度固定,而切片长度可变。例如:
var arr [5]int
arr[0] = 1
sli := []int{1, 2, 3}
sli = append(sli, 4)
5. 函数定义
函数使用 func 关键字定义,并且可以有多个返回值。例如:
func add(a, b int) int {
return a + b
}
x, y := swap(1, 2)
func swap(a, b int) (int, int) {
return b, a
}
展开评论点赞 - #青训营 x 字节后端训练营#
Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样,不会每次内存分配都需要进行系统调用。
Golang运行时的内存分配算法主要源自 Google 为 C 语言开发的TCMalloc算法,全称Thread-Caching Malloc。核心思想就是把内存分为多级管理,从而降低锁的粒度。它将可用的堆内存采用二级分配的方式进行管理:每个线程都会自行维护一个独立的内存池,进行内存分配时优先从该内存池中分配,当内存池不足时才会向全局内存池申请,以避免不同线程对全局内存池的频繁竞争
展开评论点赞 - #青训营 x 字节后端训练营#
go语言1. 并发编程:使用goroutine和channel实现并发编程,避免共享内存的竞态问题。
2. 反射机制:通过反射机制可以动态获取类型信息和调用方法,实现更灵活的编程方式。
3. 接口和多态:Go语言支持接口和多态,可以实现更高层次的抽象和封装。
4. defer和panic/recover:defer语句可以在函数返回之前执行一些清理工作,而panic/recover机制可以处理程序运行时发生的异常情况。
5. 内存管理:Go语言采用垃圾回收机制来管理内存,无需手动释放内存,但需要注意避免内存泄漏。
6. 包管理:Go语言支持模块化开发,通过包管理机制可以将代码组织成多个独立的模块,在不同项目中复用。
7. 并行计算:使用go语言的并行计算库可以方便地进行任务分发和结果汇总,提高计算效率。
8. 错误处理:Go语言提供了统一的错误处理机制,通过自定义错误类型和错误码可以更好地掌控程序运行时可能出现的各种错误。
9. 数组和切片:数组和切片是Go语言中常用的数据结构,可以方便地操作一组相同类型的元素。
10. JSON和XML处理:Go语言提供了内置的JSON和XML处理库,方便地对这两种数据格式进行解析和生成。
展开评论点赞 - #青训营 x 字节后端训练营#
Go语言中有三种循环遍历的方式:for循环、range关键字和while循环。
1. for循环
常规的for循环:
```
for i := 0; i < 10; i++ {
fmt.Println(i)
}
```
2. range关键字
range可以遍历数组、切片、映射(map)、通道(channel),以及字符串等类型。
遍历数组或切片:
```
a := []int{1, 2, 3, 4, 5}
for index, value := range a {
fmt.Println(index, value)
}
```
遍历映射(map):
```
m := map[string]int{"one": 1, "two": 2, "three": 3, "four": 4}
for key, value := range m {
fmt.Println(key, value)
}
```
遍历字符串:
```
str := "hello world"
for index, value := range str {
fmt.Println(index, string(value))
}
```
3. while循环
Go语言中没有专门的while循环,但可以使用for循环来实现while循环的效果。例如:
```
i := 0
for i < 10 {
fmt.Println(i)
i++
}
```展开评论点赞 - #青训营 x 字节后端训练营# go语言中的循环语句有for循环和range循环。
1. for循环:
for循环有三种形式:
① for init; condition; post {
// 循环体
}
其中init语句可以是一个简单语句,用于初始化循环条件;condition必须是一个bool类型表达式,表示循环条件;post语句可以是一个简单语句,用于在每次循环结束后更新循环变量。
② for condition {
// 循环体
}
这种形式就相当于while循环,只有一个循环条件。
③ for {
// 循环体
}
这种形式就是无限循环,没有循环条件,直到遇到break或return语句才会退出循环。
2. range循环:
range循环用于遍历数组、切片、map等数据结构,格式如下:
for key, value := range collection {
// 循环体
}
其中key为下标或键值,value为对应元素的值。collection可以是数组、切片、map等数据结构。展开评论点赞