Go的设计目标之一就是简单。但Go有结构类型的值和指针,我认为开发人员可以选择这些值,而java和javascript有一个非常简单的规则:原始类型总是值,对象类型总是指针。为什么不采用java和javascript这个简单的规则?或者与指针相比,价值观有哪些重要优势?
答案 0 :(得分:2)
在Go中,灵活性允许您优化程序,因为它默认是垃圾收集的。请参阅FAQ:
如果可能,Go编译器将分配变量 是函数的堆栈框架中的函数的本地函数。但是,如果 编译器无法证明变量未被引用 函数返回,然后编译器必须分配变量 垃圾收集堆,以避免悬空指针错误。
如果按值返回结构,则不会在堆上分配它。因此,垃圾收集器不必跟踪它以确定何时释放为其分配的内存是安全的。