您的位置:首页 > 科技 > 能源 > 天津建设工程信息平台_深圳市政设计院_西安发布最新通知_厦门网络推广

天津建设工程信息平台_深圳市政设计院_西安发布最新通知_厦门网络推广

2025/4/29 21:54:43 来源:https://blog.csdn.net/m0_69660072/article/details/147563114  浏览:    关键词:天津建设工程信息平台_深圳市政设计院_西安发布最新通知_厦门网络推广
天津建设工程信息平台_深圳市政设计院_西安发布最新通知_厦门网络推广

目录

  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 官方文档

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com