开学第一课:Go 语言入门指南:基础语法和常用特性解析**| 豆包MarsCode AI刷题**
1.1 什么是Go语言
1.2 Go语言的特性
- 高性能、高并发: 性能直追C艹,不需要寻找经过高度性能优化的第三方库即可开发高并发应用程序。
- 语法简单、学习曲线平缓 :在C语言上进行了优化。
- 丰富的标准库 :标准库有很高的稳定性和兼容性保障。
- 完善的工具流 :内置了完整的单元测试、性能测试框架。
- 静态链接 :所有的编译结果都是静态链接的,只需要拷贝编译后的唯一可执行文件,即可部署运行,镜像体积可以非常小。增加几行代码可以一秒内完成编译(增量编译)。
- 跨平台 :
- 垃圾回收 :类似JAVA写代码时,无需考虑内存释放。
1.3 环境安装与配置##
go.dev
studygolang.com
goproxy.cn
1.3 代码实例
package main
import (
"strings"
"unsafe"
)
const (
a = "a12hjhvjhj"
b = len(a)
c = unsafe.Sizeof(a)
)
func main() {
const Pi = 3.14159
var arr = [3]int{1, 2, 3}
var d = 1
var ptr *int = &d
println(*ptr, ptr, d, &d)
println(a, b, c)
print(arr[0])
println(a[:])
println(strings.Split(a, "h"))
println(strings.Replace(a, "h", "2", 2))
}
2.1 基础语法——变量
| 类型 | 备注 |
|---|
| 字符串 | 可以用+进行拼接,可以用=判断相等 |
| 整型 | |
| 浮点型 | |
| 布尔型 | |
2.2 基础语法 - if else
package main
import "fmt"
func main() {
if 10%2 == 0 {
fmt.Println("偶数")
} else {
fmt.Println("奇数")
}
- go里的if语句没有小括号
- go内的if语句不能和大括号内的语句在同一行
2.3 基础语法 - for循环
package main
import "fmt"
func main() {
for {
fmt.Println("死循环")
}
for j:=7;j<9;j++ {
fmt.Println(j)
}
for k:=0;k<10;k++{
if k%2==0 {
continue
}
}
i:=1
for i<=3{
i=i+1
}
}
2.4 基础语法 - switch
- go的switch区别于C艹,在执行完一个case语句后不会接着执行,会直接跳出switch语句,不需要像c艹一样每一个语句后面都加continue
- go的switch功能更加强大,变量可以 是函数,字符串,结构体等等
2.5 基础语法 - 数组
package main
import "fmt"
func main() {
var a [5]int
a[4] = 100
b := [5]int{1, 2, 3}
fmt.Println(b)
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println(twoD)
}
- 开发业务数组用的少,因为长度是固定的,一般是用切片
2.5 基础语法 - 切片
package main
import "fmt"
func main() {
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println(len(s))
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println(s)
c := make([]string, len(s))
copy(c, s)
fmt.Println(c)
fmt.Println(c[2:5])
}
- 区别于python,go的切片不能使用负索引,所以只能通过len()方法获取列表长度,然后减,进行类似功能
2.5 基础语法 - map
package main
import "fmt"
func main() {
m := make(map[string]int)
m["one"] = 1
m["tow"] = 2
fmt.Println(m)
delete(m, "one")
fmt.Println(m)
m2 := map[string]int{"one": 1, "zero": 0}
fmt.Println(m2)
}
2.5 基础语法 - range
package main
import "fmt"
func main() {
nums := []int{2, 3, 4}
for i, num := range nums {
println(i, ":", num)
}
m := map[string]string{"a": "A", "b": "B"}
for k, v := range m {
fmt.Println(k, v)
}
}