Go学习之遇到的第一大坑
2016-12-23 11:37
316 查看
最近
最近开始学习go语言
初步设想是通过mysql,建一张表,然后通过Go把这张表的数据以JSON格式提供出去
环境搭建好后,跑程序发现无论如何也无法通过浏览器展示想要看的数据
最终在室友的帮助下,发现是数据结构体定义出了问题使用
我定义的结构体:
可以看到变量采用了下划线方式连接字符
而Go语言采用的是驼峰法命名规范
驼峰法命名又分大驼峰和小驼峰
区别是第一个字母是大写还是小写的问题
问题
问题就出在变量以小写开头,和下划线无关
我的程序里面http的handler需要使用
《Go并发编程实战》第15页讲到:
Go语言把变量、常量、函数、结构体和接口统称为程序实体,而把它们的名字统称为标识符;
标识符首字母大小写控制着程序实体的访问权限;
如果标识符的首字母是大写的,那么它所对应的程序实体就可以被本代码包之外的代码访问到,也称可导出的;
否则,对应程序实体只能被本代码包访问;
解决
而我的程序是把数据从mysql读取出来,然后放到该结构体
并且通过json模块转换成json格式,问题就出在json转换
因为json对应本代码包来说是其它包
根据上面的原则,我的结构体标识符是小写开头,因此不能被外部包(json)
最终改成大写开头解决:
最近开始学习go语言
初步设想是通过mysql,建一张表,然后通过Go把这张表的数据以JSON格式提供出去
环境搭建好后,跑程序发现无论如何也无法通过浏览器展示想要看的数据
最终在室友的帮助下,发现是数据结构体定义出了问题使用
我定义的结构体:
type server struct { ma_type string cu_Type string }
可以看到变量采用了下划线方式连接字符
而Go语言采用的是驼峰法命名规范
驼峰法命名又分大驼峰和小驼峰
区别是第一个字母是大写还是小写的问题
问题
问题就出在变量以小写开头,和下划线无关
我的程序里面http的handler需要使用
《Go并发编程实战》第15页讲到:
Go语言把变量、常量、函数、结构体和接口统称为程序实体,而把它们的名字统称为标识符;
标识符首字母大小写控制着程序实体的访问权限;
如果标识符的首字母是大写的,那么它所对应的程序实体就可以被本代码包之外的代码访问到,也称可导出的;
否则,对应程序实体只能被本代码包访问;
解决
而我的程序是把数据从mysql读取出来,然后放到该结构体
并且通过json模块转换成json格式,问题就出在json转换
因为json对应本代码包来说是其它包
根据上面的原则,我的结构体标识符是小写开头,因此不能被外部包(json)
最终改成大写开头解决:
type server struct { MaType string CuType string }
相关文章推荐
- webpack学习遇到大坑(纯属自己记录)
- Golong学习之常见开发陷阱,你遇到过几个?
- 最近学习J2EE遇到的问题及解决方法(一)
- 今天开始使用这个blog来记录我的学习中遇到的问题吧
- 学习中遇到的问题--关于内存分配异常的问题
- DirectShow 学习笔记第一部分
- ajax学习中遇到的问题
- 菜鸟学习C系列——遇到的第1个问题。
- 学习C#在tyr catch finally 中遇到的问题
- 第一阶段学习结束,开始深层次的摸索
- 学习JAVA一个月来,所遇到的一些问题(不全)
- [学习笔记]学C#遇到的几个问题
- 学习JSP遇到的问题 ---标准标志库
- 今天学习C#遇到的几个问题
- 学习遇到阻碍
- 学习NET遇到的问题
- hibernate+mysq学习中遇到的错误及解决方法(1)
- vc学习遇到的几个问题。。2005-03-07
- 学习linux framebuffer遇到的一些词汇的理解
- 从ACCESS转到学习SQL SERVER所遇到的几个问题