前两天线上出了个诡异bug,排查半天才发现是依赖了map的遍历顺序。这事说出来丢人,但我猜不少人栽过。
Go那个map你们知道的,人家故意把遍历顺序随机化,每次跑都不一样。设计组就是专门防你顺手依赖顺序写代码。我当年图省事,拿map当有序结构使,本地测好好的,一上生产直接翻车,数据对不上找了一整晚。
Python更逗,3.7之前dict压根不保序,之后才变插入有序。啊老代码跨版本迁移时,一堆靠dict顺序撑着的断言全挂,那种玄学bug最折磨人。
最狠的是多线程,哪怕语言明确保序,几个线程同时写照样乱成一锅粥,断言崩得亲妈不认。所以啊,哈希表本就无序,真要顺序就自己排一遍,别偷懒拿它当数组使。