Go学习之遇到的第一大坑

在学习Go语言过程中,作者遇到了一个问题:无法通过浏览器展示MySQL数据的JSON格式。问题根源在于结构体定义不符合Go语言的驼峰命名规范。Go语言规定,首字母小写的标识符只能在本包内访问,而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
}



### PyInstaller 使用中的常见问题及解决方案 #### 1. 打包后的程序无法运行 当使用 `PyInstaller` 进行打包后,如果发现生成的可执行文件无法正常启动或报错,通常是因为缺少依赖库或资源文件。 对于缺失依赖的情况,可以尝试通过指定隐藏导入来解决问题。例如,在 `.spec` 文件中添加所需的模块: ```python hiddenimports=['module_name'] ``` 另外,确保所有外部资源(如配置文件、图片等)都已正确包含在打包过程中。可以通过修改 `.spec` 文件中的数据部分实现这一点[^2]。 #### 2. 更新 PyInstaller 版本 有时旧版本可能存在某些 bug 或不兼容新特性的问题。建议定期更新至最新稳定版以获得更好的支持和服务质量改进。 命令行为: ```bash pip install --upgrade pyinstaller ``` 这有助于修复潜在错误并提高工具性能表现[^3]。 #### 3. 虚拟环境中使用 PyInstaller 为了防止全局 Python 环境受到污染以及更好地管理项目所需的各种第三方库,推荐在一个独立的虚拟环境下工作。 进入特定虚拟环境后再调用 `pyinstaller` 命令完成应用构建操作是一个不错的选择。具体做法如下所示: ```bash activate myenv # Windows下激活名为myenv的Anaconda虚拟环境 source activate myenv # macOS/Linux下激活名为myenv的Anaconda虚拟环境 pyinstaller your_script.py ``` 这样能够有效隔离不同项目的开发环境之间的相互影响[^4]。 #### 4. 将 .py 文件转换为 exe 文件 针对初次接触此过程的新手开发者来说,掌握如何将纯文本形式编写的Python脚本转变为跨平台可用的独立执行档是一项重要技能。 简单起见,只需一条简单的命令即可达成目标;而对于更复杂的应用,则可能需要进一步调整参数设置或编写自定义规格说明书(.spec file)[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值