Hi! I am writing a tool that handles files and generates some sorted output. Since this tool is to be a replacement for part of another system (written in C#/.NET), the output must be a byte-exact duplicate.
The existing system generates some checksums and filenames in a stable sorted order, like so (also pastebinned at https://dpaste.org/MLMv): ``` addons/rhs_bmp.pbo 2D08606D9BCB43E37A44CDBCD753F663 addons/rhs_bmp.pbo.rhsafrf.0.5.6.bisign 4F0BAAFDDC2C3474F7B310BAF221C22E addons/rhs_bmp_camo.pbo 5A9AED2283EE8B8E55BE07772CB9EF33 addons/rhs_bmp_camo.pbo.rhsafrf.0.5.6.bisign C5638F6DC62DED7C05877896096BE7CC addons/rhs_bmp3.pbo 1F8E4520CA673FE5F67E434D6C9C3EAA addons/rhs_bmp3.pbo.rhsafrf.0.5.6.bisign addons/rhs_bmp3_camo.pbo CE25F0037BCD19F55D6AA1CD3AEA0B86 addons/rhs_bmp3_camo.pbo.rhsafrf.0.5.6.bisign 9CF15ED151231E6C1E8A5E63C5AAD829 addons/rhs_btr70.pbo 7FCC93BDDBE1A0573ABF146FA7C1FAD9 addons/rhs_btr70.pbo.rhsafrf.0.5.6.bisign 61FD5A3D99F6A60BB31F0D396B19E5C5 addons/rhs_btr70_camo.pbo 9A8F2BF875276FA1F7018F2D60C89D7A ``` My tool works just fine, except it disagrees on the sorting (pastebinned at https://dpaste.org/UDiK): ``` addons/rhs_bmp.pbo 2D08606D9BCB43E37A44CDBCD753F663 addons/rhs_bmp.pbo.rhsafrf.0.5.6.bisign C5638F6DC62DED7C05877896096BE7CC addons/rhs_bmp3.pbo 1F8E4520CA673FE5F67E434D6C9C3EAA addons/rhs_bmp3.pbo.rhsafrf.0.5.6.bisign 2CCF421E08170964CF323A98725DDA6E addons/rhs_bmp3_camo.pbo CE25F0037BCD19F55D6AA1CD3AEA0B86 addons/rhs_bmp3_camo.pbo.rhsafrf.0.5.6.bisign 4F0BAAFDDC2C3474F7B310BAF221C22E addons/rhs_bmp_camo.pbo 5A9AED2283EE8B8E55BE07772CB9EF33 addons/rhs_bmp_camo.pbo.rhsafrf.0.5.6.bisign 9CF15ED151231E6C1E8A5E63C5AAD829 addons/rhs_btr70.pbo 7FCC93BDDBE1A0573ABF146FA7C1FAD9 ``` In essence, to the .NET program `_` sorts before `3`, whereas for my Go program, it is the other way around. Now we could discuss at length which order is the correct one, but for my purposes (replicating the .NET tool) is what I strongly prefer. The alternative would be a breaking change in a larger system I do not control, and as such would be a lot of pain. So my question is: what is the easiest way to tell Go that `_` sorts before numerals here? My current sort helpers are (on the playground: https://play.golang.org/p/pQLeZN-fptY): ``` type Files []ModFile type ModFile struct { Path string // Other fields here } func (f Files) Len() int { return len(f) } func (f Files) Swap(i, j int) { f[i], f[j] = f[j], f[i] } func (f Files) Less(i, j int) bool { return strings.ToLower(f[i].Path) < strings.ToLower(f[j].Path) } ``` (yes, the case folding is another peculiarity of the .NET tool) Best, Tobias -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/YP/zSVcWipS7lsB5%40skade.schwarzvogel.de.