当前位置: 首页 > news >正文

Golang 学习指南

目录

  1. 变量与常量
  2. 数据类型与控制结构
  3. 常用数据结构
  4. 函数与错误处理
  5. 指针与并发
  6. Gin 框架与 go mod
  7. 小结与参考资料

1. 变量与常量

  • 变量(var)
    • 用于定义可变的值。
    • 可以指定类型,也可以自动推断类型。
    • 示例:
      var name string = "Golang" // 明确指定类型
      age := 18                  // 自动推断为 int
      fmt.Println(name, age)     // 输出:Golang 18
      
  • 常量(const)
    • 用于定义不可变的值,声明时必须赋初值。
    • 类型可以省略,不能用 :=。
    • 示例:
      const pi = 3.1415          // pi 是常量,类型自动推断为 float64
      // pi = 3.15               // 错误,常量不能被赋新值
      const greeting string = "Hello" // 也可以指定类型
      fmt.Println(pi, greeting)  // 输出:3.1415 Hello
      
  • 注意
    • var 只能定义变量,const 只能定义常量。
    • 常量一旦定义,值不可更改。

2. 数据类型与控制结构

  • 基本数据类型
    • int、float64、bool、string 等。
    • 示例:
      var n int        // 默认值 0
      var f float64    // 默认值 0.0
      var b bool       // 默认值 false
      var s string     // 默认值 ""
      fmt.Println(n, f, b, s) // 输出:0 0 false
      
  • 条件与循环
    • if/else、for 循环。
    • 示例:
      age := 20
      if age >= 18 {fmt.Println("成年人")
      } else {fmt.Println("未成年人")
      }// for 循环
      for i := 0; i < 3; i++ {fmt.Println(i)
      }
      

3. 常用数据结构

  • 数组与切片(slice)
    • 数组长度固定,切片长度可变。
    • 示例:
      arr := [3]int{1, 2, 3}      // 数组
      s := []int{4, 5, 6}         // 切片
      s = append(s, 7)            // 添加元素
      fmt.Println(arr, s)         // 输出:[1 2 3] [4 5 6 7]
      
  • map(字典)
    • 键值对集合。
    • 示例:
      m := make(map[string]int)  // 创建空 map
      m["one"] = 1              // 给 key "one" 赋值 1
      m["two"] = 2              // 给 key "two" 赋值 2
      fmt.Println(m)             // 输出:map[one:1 two:2]
      v := m["one"]             // 取值
      delete(m, "one")          // 删除 key
      for k, v := range m {fmt.Println(k, v)      // 遍历
      }
      

4. 函数与错误处理

  • 函数定义与调用
    • 示例:
      func add(a int, b int) int {return a + b
      }
      sum := add(3, 5)
      fmt.Println(sum) // 输出:8
      
  • 多返回值与错误处理
    • Go 常用 error 类型处理错误。
    • 示例:
      import "errors"
      func div(a, b int) (int, error) {if b == 0 {return 0, errors.New("除数不能为0")}return a / b, nil
      }
      result, err := div(10, 0)
      if err != nil {fmt.Println("错误:", err)
      } else {fmt.Println(result)
      }
      

5. 指针与并发

  • 指针
    • 指针保存变量的内存地址,可用于函数参数传递和并发安全。
    • 示例:
      var x int = 10
      var p *int = &x             // p 是指向 x 的指针
      fmt.Println(*p)             // 输出:10,*p 取指针指向的值
      
  • 并发:Goroutine 和 Channel
    • 示例:
      ch := make(chan int)        // 创建 int 类型的通道
      go func() {ch <- 42                // 向通道发送数据
      }()
      v := <-ch                   // 从通道接收数据
      fmt.Println(v)              // 输出:42
      
    • 指针常用于并发安全的数据结构和锁。

6. Gin 框架与 go mod

  • 初始化 go mod
    • 在项目目录下执行:
      go mod init myginapp
      
  • 安装 Gin 框架
    • 执行:
      go get github.com/gin-gonic/gin
      
  • 快速搭建 Web 服务
    • 示例:
      import "github.com/gin-gonic/gin"
      r := gin.Default()          // 创建 Gin 路由器
      r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong"}) // 返回 JSON
      })
      r.Run()                     // 启动服务,默认端口 8080
      // 访问 http://localhost:8080/ping 得到 {"message":"pong"}
      
  • go mod
    • 自动管理依赖,go.mod 文件记录依赖包信息。

7. 小结与参考资料

  • Go 语法简洁,适合高并发、网络编程。
  • 推荐阅读:
    • Go 官方文档
    • Go by Example
    • Gin 官方文档

相关文章:

  • 基于ArcGIS的洪水淹没分析技术-洪水灾害普查、风险评估及淹没制图中的实践技术
  • Rollup、Webpack、Esbuild 和 Vite 前端打包工具
  • django.db.models.query_utils.DeferredAttribute object
  • Go RPC 服务方法签名的要求
  • Spark-Streaming3
  • Nacos简介—4.Nacos架构和原理一
  • 树莓派超全系列教程文档--(44)如何在树莓派上编译树莓派内核
  • 如何实现一个可视化的文字编辑器(C语言版)?
  • 优考试V4.20机构版【附百度网盘链接】
  • RabbitMQ应用(基于腾讯云)
  • 基于定制开发开源AI智能名片S2B2C商城小程序的会员存量池构建策略研究
  • 区块链基石解码:分布式账本的运行奥秘与技术架构
  • 助力产业升级 | BMC安全启动方案上新了!
  • Mysql从入门到精通day6————时间和日期函数精讲
  • 【PINN】DeepXDE学习训练营(6)——function-mf_func.py
  • Redis远程链接应用案例
  • 打造企业级AI文案助手:GPT-J+Flask全栈开发实战
  • CSDN编辑文章时如何自动生成目录
  • 【软件工程】 白盒测试简介
  • Java高频常用工具包汇总
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存
  • 体坛联播|巴萨“三杀”皇马夺国王杯,陈妤颉破亚洲少年纪录
  • 俄军方:已完成库尔斯克地区全面控制行动
  • 对话|男篮国手杨瀚森:参加NBA选秀,去更大的舞台追梦
  • “70后”通化市委书记孙简已任吉林省政府领导
  • 生于1987年,万宏宇已任内蒙古鄂温克旗委常委