[Go] 开发 go web 项目,踩到的一些“坑”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Go] 开发 go web 项目,踩到的一些“坑”相关的知识,希望对你有一定的参考价值。

注意:这些“坑”不是bug,只是自己当时没搞明白。

用到的框架为 Beego

1、字典 map 是“引用类型”,本身就是指针,作为参数传递时,直接传 map 变量名即可(不要传 map 变量指针)。

在调用方法内,如果修改了 map 变量值,外部的 map 变量值也会被改变的!

例如 Beego 控制器属性 Data,如果 其他的地方需要用到这个变量,直接传入 Data 变量名即可,参考代码如下:

## 控制器内代码

// 预处理
func (c *PassportController) Prepare() {

    // 核对 用户会话状态(是否已登录)
    res := passportService.ManagerCheckLoginSession(c.Ctx, c.Data)
    println(res.Msg)

}

## 调用到的方法

func (s *PassportService) ManagerCheckLoginSession(Ctx *context.Context, Data map[interface{}]interface{}) *beego.Result {
    // ...代码省略
}

 

2、go 文件 不能以“_”为前缀,否则 go 底层会忽略它的存在(即文件不起作用,里面的代码也就不起作用)

如:_templatefunc.go 这个文件是无效的

以上是关于[Go] 开发 go web 项目,踩到的一些“坑”的主要内容,如果未能解决你的问题,请参考以下文章

Go原生插件使用问题全解析

Go语言 | 01 WSL + VSCode环境搭建避坑指南

[翻译]Go的50坑:新Golang开发者要注意的陷阱技巧和常见错误[1]

Golang 需要避免踩的 50 个坑

第一个React Native程序踩到的那些坑

使用HTTP Client踩到的一个坑,你一定要避免