[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 局部变量 初始化 := 的陷阱
5、Go语言第一深坑:interface 与 nil 的比较
[Go] 开发 go web 项目,踩到的一些“坑”的更多相关文章
- 26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面
转自:https://blog.csdn.net/yuxxz/article/details/51318908 使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及 ...
- 在linux上部署自己开发的web项目
在linux上部署自己开发的web项目 前言:相信有很多做开发的小伙伴和我之前一样,只会在windows环境下,利用开发工具开发运行web项目,但是却不知道怎么把开发好的项目部署到linux服务器上去 ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- MyEclipse开发Java Web项目步骤
1.安装工具 第一步,下载安装JDK,并配置环境: 配置环境变量步骤: (1)新建变量名:JAVA_HOME,变量值为JDK的安装路径: (2)打开PATH,添加变量值:%JAVA_HOME%\bin ...
- eclipse开发创建web项目
1.打开eclipse,界面如下: 2.首先配置tomcat,操作:Windows--->perferences 如下: 3.操作:server--->Runtime Environmen ...
- 使用intelliJ IDE开发java web项目
<!-- spring版本号 --> <spring.version>4.3.0.RELEASE</spring.version> <!-- mybatis版 ...
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
上篇博文我们介绍了mybatis的基本概念与原理,这篇博文我们通过Spring与Mybatis集成,开发一个简单用户增删改查的Web项目. 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2. ...
- 使用IntelliJ IDEA 开发Java Web项目
- web项目踩坑过程
sql函数设计: 一开始本来是直接用Java的jdbc直接传输操作语句的.但后来学了存储过程发现存储过程可以提高不少的效率.就重构了自己对数据库的操作代码.包括:开启,查找,修改,关闭. 开启:直接使 ...
随机推荐
- Expm 1_2 实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.
package org.xiu68.exp.exp1; public class Exp1_2 { //实现快速排序算法,采用不同的方法实现线性划分的过程 public static void mai ...
- Fiddler模拟post四种请求数据
前言: Fiddler是一个简单的http协议调试代理工具,它界面友好,易于操作,是模拟http请求的利器之一. 在接口测试中,接口通常是get请求或者post请求.get请求的测试一般较为简单,只需 ...
- Dotfuscator使用
参考:https://www.cnblogs.com/xiezunxu/articles/7228741.html
- Android学习笔记————利用JDBC连接服务器数据库
/******************************************************************************************** * auth ...
- RHEL7 配置iSCSI模拟环境
在之前文章<multipath多路径实验01-构建iSCSI模拟环境>中,已经介绍了如何构建iSCSI模拟环境(RHEL6),但在RHEL7中已经不适用,本文记录下新的配置方法. 环境:R ...
- cf807 c 二分好题
能够二分判定的前提是能找到一个单调关系,有时候需要将不是单调关系的数据转换成另外的具有单调关系的数据 #include<bits/stdc++.h> using namespace std ...
- 写给Android开发者的混淆使用手册
转自:http://huihui.name/2016/10/23/%E5%86%99%E7%BB%99Android%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E6%B7 ...
- POJ 3190 Stall Reservations【贪心】
POJ 3190 题意: 一些奶牛要在指定的时间内挤牛奶,而一个机器只能同时对一个奶牛工作.给你每头奶牛的指定时间的区间(闭区间),问你最小需要多少机器.思路:先按奶牛要求的时间起始点进行从小到大排序 ...
- 【Java】 剑指offer(41) 数据流中的中位数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中 ...
- Scrapy爬虫笔记 - 爬取知乎
cookie是一种本地存储机制,cookie是存储在本地的 session其实就是将用户信息用户名.密码等)加密成一串字符串,返回给浏览器,以后浏览器每次请求都带着这个sessionId 状态码一般是 ...