提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 1. Go 语言简介
- 2. 基本语法
- 变量声明与赋值
- 常量
- 数据类型
- 运算符
- 3. 控制结构
- 条件语句
- 循环语句
- 4. 函数
- 函数定义与调用
- 多返回值
- 匿名函数与闭包
- 5. 并发编程
- goroutine
- channel
- 6. 错误处理
- 7. 标准库介绍
- 8. 代码示例
- 总结
1. Go 语言简介
Go(又称 Golang)是一种编译型、静态类型、并发型,并具有垃圾回收功能的编程语言。由 Google 开发,于 2009 年正式发布。
2. 基本语法
变量声明与赋值
// 使用 var 关键字声明变量
var a int
var b, c string = "hello", "world"// 简短变量声明(只能在函数内部使用)
d := 10
常量
const Pi = 3.14
const AppName = "MyGoApp"
数据类型
Go 语言是强类型语言,支持多种数据类型,包括布尔型、整型、浮点型、复数、字符串等。
运算符
// 算术运算符
a := 5 + 3
b := 10 - 4
c := 3 * 7
d := 20 / 4
e := 7 % 3// 关系运算符
f := 10 > 5
g := 10 <= 5// 逻辑运算符
h := true && false
i := true || false
3. 控制结构
条件语句
if x > 10 {fmt.Println("x is greater than 10")
} else if x == 10 {fmt.Println("x is equal to 10")
} else {fmt.Println("x is less than 10")
}
循环语句
// for 循环
for i := 0; i < 10; i++ {fmt.Println(i)
}// while 循环的等价形式(通过省略初始化和后置语句实现)
i := 0
for i < 10 {fmt.Println(i)i++
}// 无限循环
for {// do somethingbreak // 需要某种条件来跳出循环
}
4. 函数
函数定义与调用
// 定义函数
func add(a int, b int) int {return a + b
}// 调用函数
result := add(5, 3)
fmt.Println(result) // 输出 8
多返回值
func swap(x, y string) (string, string) {return y, x
}a, b := swap("hello", "world")
fmt.Println(a, b) // 输出 world hello
匿名函数与闭包
// 匿名函数
func(a, b int) int {return a * b
}(3, 4) // 直接调用并返回 12// 闭包
addOne := func(x int) int {return x + 1
}
fmt.Println(addOne(5)) // 输出 6
5. 并发编程
goroutine
go func() {fmt.Println("This runs in a goroutine")
}()// 主 goroutine 等待一段时间,以确保 goroutine 执行完毕(仅作为示例,实际应使用 sync.WaitGroup 等机制)
time.Sleep(1 * time.Second)
channel
ch := make(chan int)go func() {ch <- 42
}()value := <-ch
fmt.Println(value) // 输出 42
6. 错误处理
func divide(a, b float64) (float64, error) {if b == 0 {return 0, errors.New("division by zero")}return a / b, nil
}result, err := divide(10, 0)
if err != nil {fmt.Println("Error:", err)
} else {fmt.Println("Result:", result)
}
7. 标准库介绍
- fmt:格式化 I/O 函数。
- os:提供了与操作系统交互的功能。
- net/http:实现了 HTTP 客户端和服务器的功能。
8. 代码示例
以下是一个完整的 Go 程序示例,它演示了上述多个知识点:
package mainimport ("errors""fmt""time"
)func main() {// 变量声明与赋值var a int = 10b := "Hello, Go!"fmt.Println(a, b)// 条件语句if a > 5 {fmt.Println("a is greater than 5")}// 循环语句for i := 0; i < 5; i++ {fmt.Println(i)}// 函数调用sum := add(5, 3)fmt.Println("Sum:", sum)// 并发编程go func() {fmt.Println("This runs in a goroutine")}()time.Sleep(1 * time.Second) // 等待 goroutine 完成// 错误处理result, err := divide(10, 0)if err != nil {fmt.Println("Error:", err)} else {fmt.Println("Result:", result)}// 使用 net/http 创建一个简单的 HTTP 服务器http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "Hello, World!")})http.ListenAndServe(":8080", nil)
}// 函数定义
func add(a int, b int) int {return a + b
}func divide(a, b float64) (float64, error) {if b == 0 {return 0, errors.New("division by zero")}return a / b, nil
}
请注意,由于示例中包含了 HTTP 服务器的创建,你需要确保在运行此代码之前已经导入了 "net/http"
包,并且由于 main
函数中的 HTTP 服务器会阻塞,因此 goroutine 的示例可能需要被移至其他函数或进行适当的调整以避免死锁。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,自学记录Go语言基础知识点总览。