zoukankan      html  css  js  c++  java
  • [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 这个文件是无效的

    3、编译时报错:import cycle not allowed

    Golang 不允许循环导包,否则,会在编译时报错,通常是因为设计错误 或 包的规划有问题,例如

    import(
        "package A"
        "package B"
    )

    如果 package A 中已经导入 package B,而本 package A 中又导入 package B

    或者 package A 依赖package B,同时 package B 依赖 package A

    这样就会在编译时报 "import cycle not allowed"。

    如何避免重复导入包的问题,就需要在设计时规划好包。

    详细查看:http://ju.outofmemory.cn/entry/230115

    4、被 局部变量 覆盖

    一个有关Golang变量作用域的坑

    [荐][容易出错] Golang 局部变量 初始化 := 的陷阱

    5、Go语言第一深坑:interface 与 nil 的比较

  • 相关阅读:
    第63天python学习异常
    第62天python 学习TCP三次握手四次挥手详解
    文件操作
    内置函数
    函数递归
    函数补充
    函数
    购物车程序作业
    集合内置函数
    字典三级菜单
  • 原文地址:https://www.cnblogs.com/52php/p/7353374.html
Copyright © 2011-2022 走看看