举荐浏览 大小写敏感知多少
文件大小写与文件系统无关,与操作系统无关。
血泪教训--拿到新移动硬盘该做的第一件事
MacOS 默认的文件系统APFS,如果没有手动更改,默认不辨别大小写(能够在初始化时设置为大小写敏感)。
而公司测试/生产环境多为 Linux 零碎,个别应用EXT3/EXT4 文件系统, 辨别大小写。
<font size=1>Windows 应用的 NTFS 和 FAT 系列文件系统,默认大小写不敏感但大小写保留</font>
因而可能呈现Mac开发&自测时合乎预期,但一到测试/正式环境等后续环节就出bug的状况。
以下为工作中实在遇到的一例case:
Go中 一个文件夹下只能有一个package, package名称和文件夹名称不须要一样。go语言中package和文件夹的关系
但在想import这个package时,须要指定到文件夹名称。
还能够参照了解go import时的下划线--举荐浏览,对援用的package的名称做各种trick
我的项目用到一个第三方库(此处为自行mock),
package mainimport ( "fmt" "github.com/cuishuang/utils/strOpt")// 验证大小写不敏感导致的问题func main() { rawStr := "($666789$ && $888123$) || $31415$" rs := stringOpt.GetObjFromTwoSymbol(rawStr) fmt.Println("两头的数字为:", rs)}
go.mod为:
module blogggo 1.16require github.com/cuishuang/utils v0.0.2
本地运行失常
如果在开发过程中,不小写将"github.com/cuishuang/utils/strOpt"
写成了"github.com/cuishuang/utils/stropt"
,能够理论批改试验,在Mac上没有任何问题,能够失常找到这个package
但在Linux上(此处是在Mac上的Docker中模仿),则会报错 go get: module github.com/cuishuang/utils@upgrade found (v0.0.2), but does not contain package github.com/cuishuang/utils/stropt
或 ... cannot find module providing package ...
Mac 大小写不敏感解决方案
另:
Go 标识符的命名标准
最好放弃 package 的名字和目录保持一致。尽量采取有意义的包名,简短,有意义,尽量和规范库不要抵触。包名应该为小写单词,尽量不要应用下划线或者混合大小写。
本文由mdnice多平台公布