C是一种类型不安全的静态类型语言,因为指针(void *y)允许您做任何您喜欢做的事情,甚至那些会导致程序崩溃的事情。
GO也是一种静态类型语言。
尽管GO有指针(var y *int),它仍然被认为是类型安全的语言.
问题:
考虑到围棋的指针,
为什么GO语言被称为类型安全语言?
发布于 2017-01-29 01:19:53
Go和C之间有一些差异,使得前者至少更安全:
nil的空引用。void*等价物,interface{},是以一种更安全的方式使用类型断言的,它不仅会崩溃,而且允许更安全的类型测试或类型开关。基本上,Go和具有类似声明类型和运行时类型(C#和Java)混合的语言都是类型安全的,因为它们用运行时类型系统来补充不健全的类型系统,从而将可能导致崩溃的类型错误转换为运行时异常。
C有不健全的类型系统,也没有防止不安全行为的运行时系统。
有些语言,如苯丙胺类兴奋剂苯丙胺类兴奋剂,也喜欢运行时保护,但它们是类型安全的,因为它们的类型系统使非法操作不可说。
基本上:类型安全意味着语言不会让你做任何违法的事情。
有时运行时会阻止您(就像在Python这样的动态语言中)。
有时类型系统会阻止你。
对我来说,这是两者的结合。
发布于 2017-01-29 01:13:50
缺少类型安全性并不来自指针--它来自于void指针和在指针类型之间执行任意转换的能力。“指向整数的指针”没有什么非类型安全性--C中缺少类型安全性是因为不能保证int*实际上指向某个包含整数的内存。
https://softwareengineering.stackexchange.com/questions/341152
复制相似问题