所以,我想在Go代码中表示这个属性列表。也就是说,我正在寻找可以传达所有这些的数据结构。
Mind like a diamond
Knows what's best
Shoes that cut
Eyes that burn like cigarettes
The right allocations
Fast
Thorough
Sharp as a tack
Playing with her jewellry
Putting up her hair
Touring the facilities
Picking up slack
Short skirt
Long jacket
Gets up early
Stays up late
Uninterrupted prosperity
Uses a machete to cut through red tape
Fingernails that shine like justice
Voice that is dark like tinted glass
Smooth liquidation
Right dividends
Wants a car with a cupholder arm rest
Wants a car that will get her there
Changing her name from Kitty to Karen
Trading her MG for a white Chrysler LeBaron
他们不会很快改变,但我会想与他们做以下事情:
到目前为止我想到的方法是:
一个包含所有这些作为字段的结构,但count函数的写法不够优秀,字段的“nice”字符串名称必须存储在其他地方。即使可以用标签解决,计数问题仍然存在。
具有常量键的映射(或具有枚举值的数组)。 Counting是一个简单的循环,键可以是很好的字符串名称。但是,这会产生询问不存在的密钥的问题,并且您必须隐藏函数后面的字典以阻止用户尝试添加新密钥。
我在这里缺少什么,或者我是否必须妥协?
答案 0 :(得分:3)
我使用uint64作为bitset(或实际的bitset类型,其中没有内置但有些是开源的)。它通过以下方式满足您的要求:
如果您有超过64个属性,则可以使用val files = List("a.txt", "b.txt", "c.txt") // and so on;
val source = Source(files).flatMapConcat(f => FileIO.fromPath(Paths.get(f)))
val sink = Sink.fold[ByteString, ByteString](ByteString(""))(_ ++ ByteString("\n" ++ _) // Concatenate
source.toMat(sink)(Keep.right).run().flatMap(concatByteStr => writeByteStrToFile(concatByteStr, "an-output-file.txt"))
。
答案 1 :(得分:0)
你可以使用map [int] interface {}来存储接口内任何长度的值,使用整数作为键,或者也可以使用切片接口在数据内部循环,如[] interface {}。稍后您可以轻松键入断言接口以获取基础值,在您的情况下为字符串。 由于它将是界面或界面图的切片,您可以轻松编组它将其转换为json并保存到文件中,可以轻松读取或写入。