最近在弄golang,实在搞不懂,为啥那么多人现在就从node转向golang
先说说我的看法吧,golang从某种意义来讲,和node一样,都是有缺陷的,golang的缺陷在于配套设施缺少的太多了,接触golang快2周了,第一,缺少好的包管理机制,每次写项目要写gopath,虽然有些项目比如gvp,gpm等帮助做这样的事情,但是语言的原生不支持感觉很奇葩。第二点缺少好的调试方式,除了GDB和print之外没什么好的调试方式了。第三点,他的包机制感觉很奇葩,感觉golang想把github作为管理的一种默认状态,如果私有包的话,就比较悲剧了,引用调试之类的感觉都没有node方便。不清楚为啥还有那么多人转向golang,如果说想要惠及channel的好处,那么他们是怎么解决上面的这些问题的,我觉得如果上面的问题解决不了,用golang做工程相当的难受,基本没法忍受。希望大牛们指点一二
16 回复
我来找下喷:Golang and Docker are full of shit! 顺便留下一段可以静态编译成C的语言代码:(这才有未来语言的意思,Go is shit)
type
NodeObj[T] = object {.acyclic.}
byte: int
otherbits: char
case isLeaf: bool
of false:
child: array[0..1, ref NodeObj[T]]
of true:
key: string
when T isnot void:
val: T
proc len*[T](c: CritBitTree[T]): int =
result = c.count
proc rawGet[T](c: CritBitTree[T], key: string): Node[T] =
var it = c.root
while it != nil:
if not it.isLeaf:
let ch = if it.byte < key.len: key[it.byte] else: '\0'
let dir = (1 + (ch.ord or it.otherBits.ord)) shr 8
it = it.child[dir]
else:
return if it.key == key: it else: nil
iterator itemsWithPrefix*[T](c: CritBitTree[T], prefix: string): string =
for x in leaves(allprefixedAux(c, prefix)): yield x.key