Typensicherheit ist kein schwarz-weißer Typensafe oder nicht. Es ist eher ein Spektrum und einige Sprachen können mehr Art sicher als andere (und umgekehrt). Ich denke jedoch, was Sie mit C # im Vergleich zu Javascript denken, ist wahrscheinlich statische Typisierung (bei der die Typprüfung zur Kompilierungszeit stattfindet) im Vergleich zu dynamischer Typisierung (bei der die Typprüfung zur Laufzeit stattfindet) Worüber die Go FAQ spricht.
Google Go ist statisch geschrieben, aber eine Reihe von Funktionen lassen es (zumindest etwas) dynamisch erscheinen. Beispielsweise müssen Sie Ihre Klasse nicht explizit als Implementierung von Schnittstellen kennzeichnen. Wenn die Methodensignaturen Ihrer Klasse mit denen auf der Schnittstelle übereinstimmen, implementiert Ihre Klasse diese Schnittstelle automatisch (eine Art Duck-Typing). Dies ist nützlich, um integrierte Klassen und Klassen in Bibliotheken von Drittanbietern zu erweitern, da Sie Ihre Schnittstelle einfach so einrichten können, dass sie mit den Methoden der Klasse von Drittanbietern übereinstimmt, und diese automatisch implementiert.
Die Typensicherheit ist eigentlich eine andere "Achse" des Typensystems. Zum Beispiel ist C eine statisch typisierte Sprache, die nicht typsicher ist. Mit Zeigern können Sie so ziemlich alles tun, was Sie wollen, auch Dinge, die Ihr Programm zum Absturz bringen. Javascript wird dynamisch eingegeben, ist aber auch typsicher: Sie können keine Vorgänge ausführen, die zum Absturz Ihres Programms führen. C # ist größtenteils typsicher, aber Sie können explizit Codebereiche markieren, unsafe
die nicht mehr typsicher sind, und Aktionen ausführen, die nicht mehr typsicher sind.
Google Go ist auch in dem Sinne typsicher, dass Sie nicht mit Typen herumspielen und das Programm zum Absturz bringen können (kein direkter Zugriff auf Zeiger).