一些Go语言的开源项目

[复制链接]
发表于 2024-6-23 14:11:48 | 显示全部楼层 |阅读模式
以下是一些适合学习的 Go 语言开源项目: - **gin**:一个轻量级的 HTTP Web 框架,具有高性能和简洁的 API。 - **echo**:一个高性能、极简的 Go Web 框架,提供了路由、中间件支持等特性。 - **gorm**:一个流行的 Go 语言 ORM 库,支持多种数据库,提供了丰富的数据库操作方法。 - **go-kit**:一个用于构建微服务的编程工具集,适合需要构建可扩展、可维护服务的开发者。 - **docker**:一个开源的引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。
9.分享一些学习Go语言的代码示例
以下是一些简单的 Go 语言代码示例,希望对你的学习有所帮助: 1. 打印 "Hello, World!" ```go package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` 2. 变量和数据类型 ```go package main import "fmt" func main() { // 整数类型 var num1 int = 10 var num2 int8 = -128 var num3 uint = 25 // 浮点数类型 var float1 float32 = 3.14 var float2 float64 = 3.1415926 // 字符串类型 var str1 string = "Hello" var str2 string = `World` // 布尔类型 var bool1 bool = true var bool2 bool = false fmt.Println(num1, num2, num3) fmt.Println(float1, float2) fmt.Println(str1, str2) fmt.Println(bool1, bool2) } ``` 3. 控制结构(if-else) ```go package main import "fmt" func main() { num := 10 if num > 5 { fmt.Println("Number is greater than 5") } else { fmt.Println("Number is less than or equal to 5") } } ``` 4. 循环(for 循环) ```go package main import "fmt" func main() { for i := 0; i < 5; i++ { fmt.Println(i) } } ``` 5. 函数 ```go package main import "fmt" func add(a int, b int) int { return a + b } func main() { result := add(5, 3) fmt.Println(result) } ``` 6. 指针 ```go package main import "fmt" func main() { num := 10 ptr := &num fmt.Println("Value of num:", num) fmt.Println("Address of num:", ptr) fmt.Println("Value at the address:", *ptr) } ``` 7. 结构体 ```go package main import "fmt" type Person struct { Name string Age int } func main() { p1 := Person{Name: "Alice", Age: 25} fmt.Println(p1) } ``` 8. 数组和切片 ```go package main import "fmt" func main() { // 数组 arr := [5]int{1, 2, 3, 4, 5} // 切片 slice := []int{6, 7, 8} fmt.Println(arr) fmt.Println(slice) } ``` 9. 映射(Map) ```go package main import "fmt" func main() { // 创建一个映射 myMap := make(map[string]int) // 向映射中添加键值对 myMap["apple"] = 5 myMap["banana"] = 3 myMap["orange"] = 7 // 访问映射中的值 fmt.Println(myMap["apple"]) // 检查键是否存在 value, exists := myMap["grape"] if exists { fmt.Println(value) } else { fmt.Println("Key not found") } } ``` 10. 通道(Channel) ```go package main import ( "fmt" "time" ) func worker(id int, c chan int) { for { n, ok := <-c if!ok { return } fmt.Printf("Worker %d received %d\n", id, n) time.Sleep(time.Millisecond * 500) } } func main() { c := make(chan int) // 启动 3 个工作协程 for i := 1; i <= 3; i++ { go worker(i, c) } // 发送数据到通道 for j := 1; j <= 5; j++ { c <- j } // 关闭通道 close(c) // 等待一段时间,让工作协程完成处理 time.Sleep(time.Second * 3) } ```

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表