Laufzeit-Überprüfung von comparable Constraints

Typen, die als Schlüssel in Maps genutzt oder per == verglichen werden, müssen vergleichbar (comparable) sein. Das trifft auf die meisten primitiven Datentypen zu, allerdings nicht auf Slice- oder Funktionstypen. Als Sonderfall lassen sich auch Interface-Typen verwenden, wobei dann zur Laufzeit ein Check stattfindet, ob der tatsächlich übergebene Typ vergleichbar ist.

In generischen Funktionen versucht der Compiler diese Überprüfung während der Übersetzung, was fehlschlägt. Der Compiler ließ also keine Interface-Typen als generische Typen zu, wenn diese als Map-Schlüssel oder in einem Vergleich benutzt wurden. Mit Go 1.20 fällt diese Einschränkung weg.

Slice-zu-Array-Konvertierung

In Go 1.17 wurde die Möglichkeit eingeführt, ein Slice wieder in ein Array zu konvertieren. Slices sind Referenzen auf einen Teil eines Arrays. Der große Vorteil liegt dabei in der Flexibilität. Hat das unterliegende Array ausreichend Platz, können weitere Elemente angehängt werden, ohne dass die bestehenden Elemente in ein größeres Array kopiert werden.

Außerdem muss nicht jedes Mal das komplette Array kopiert werden, wenn es einer Funktion übergeben werden soll. Go hat von Anfang an die Möglichkeit, ein Slice von einem bestehenden Array zu erzeugen (slice):

  1. array := [4]int{1, 2, 3, 4}
  2. slice := array [:] // erzeugt ein Slice über das komplette Array

Umgekehrt war das lange nicht möglich. In Go 1.17 wurde die Möglichkeit zwar eingeräumt, die Syntax erinnert aber mehr an C als Go. Letztlich wurde lediglich der Type-Check beim Konvertieren des Slices zum Pointer eines Arrays geändert.

  1. slice := []int{1, 2, 3, 4}
  2. array := *(*[4]int)(slice)

Mit der neuen Version 1.20 wird die Syntax deutlich vereinfacht.

  1. array := [4]int(slice)

Das Ziel-Array sollte hierbei kleiner oder gleich der Kapazität des Arrays sein, das slice zugrunde liegt. Andernfalls wird eine Runtime-Panic ausgelöst.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Programmiersprache: Das ändert sich in Go 1.20Kleine Änderungen 
  1.  
  2. 1
  3. 2
  4. 3
  5.  


Aktuell auf der Startseite von Golem.de
Entlassungen bei Techfirmen
Weniger Manager sind besser

Entlassungen sind schlimm, aber die Begründungen dafür etwa von Meta kann ich zum Teil verstehen. Auch die Forderungen nach Rückkehr ins Büro finde ich richtig.
Ein IMHO von Brandur Leach

Entlassungen bei Techfirmen: Weniger Manager sind besser
Artikel
  1. Reddit: Stundenlanger Ausfall, weil niemand mehr den Code kennt
    Reddit
    Stundenlanger Ausfall, weil niemand mehr den Code kennt

    Die Analyse eines schwerwiegenden Ausfalls bei Reddit zeigt, wie kritisch institutionelles Wissen sein kann.

  2. Ausfuhrbilanz 2022: Elektroautoexporte um zwei Drittel gestiegen
    Ausfuhrbilanz 2022
    Elektroautoexporte um zwei Drittel gestiegen

    Eine halbe Million exportierter Autos hat inzwischen schon einen reinen Elektroantrieb.

  3. LTT: Linus Tech Tips von Krypto-Scammern gehackt
    LTT
    Linus Tech Tips von Krypto-Scammern gehackt

    Der Hauptkanal der Linus Media Group auf Youtube sowie mindestens ein Neben-Channel wurden von Hackern übernommen - und für Scam-Livestreams genutzt.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Ryzen 9 7900X3D 619€ • Crucial SSD 2TB (PS5) 158€ • Neu: Amazon Smart TVs ab 189€ • Nur bis 24.03.: 38GB Allnet-Flat 12,99€ • MindStar: Ryzen 9 5900X 319€ • Nintendo Switch inkl. Spiel & Goodie 288€ • NBB Black Weeks: Rabatte bis 60% • PS5 + Spiel 569€ • LG OLED TV -57% [Werbung]
    •  /