作者回复: 正解。
作者回复: ✅。答案非常细致。刚开始学go时,也不适应,后来适应后,就像你说的,在一些复杂函数/方法的声明中,类型在后面的方式更容易理解。
作者回复: 1. 保留这么多变量声明方式的原因,Go语言设计者们并未在公开场合说明过。这个我也无不能不负责任的揣测^_^。 2. rob pike只是说过,如果有机会从头设计go,他不会再提供这么多变量声明方式了。但没说要保留哪一种。如果是我设计,我可能会保留var a int以及短变量声明。
作者回复: 选Go就对了:)
作者回复: 后面会降到,go的错误处理是基于值比较的。之所以将ErrNoCookie放在包级而不是函数/方法内部,是因为需要将ErrNoCookie暴露给包的使用者。这样包的使用者才能通过ErrNoCookie与方法返回的错误值进行比较以判断是否是这个错误。
作者回复: 赞👍
作者回复: 👍
作者回复: 大约是如此。可以看看官方解释:https://go.dev/blog/declaration-syntax
作者回复: 其实官方早有正解,https://go.dev/blog/declaration-syntax 。我个人以前是C程序员,在读懂那些复杂函数的原型时,颇为费力。换做go之后,再未被这类问题困扰过:)
作者回复: int在64位平台上就是64位的。 func main() { var a = 12342342342434424 fmt.Printf("%T, %d\n", a, a) // int, 12342342342434424 } 类型还是int