Kontrakter er på vej til Googles Go-sprog

Illustration: Bigstock/REDPIXEL.PL
Go har kig på kontrakter, som skal anvendes til at indføre type-parametre i sproget.

Googles sprog Go vil i et nyt udkast tilføje kontrakter til sproget. Det skal bruges til at indføre type-parametre i sproget.

Det skriver udviklerbloggen Infoq.

Kontrakter, som som det kendes fra sproget Eiffel, handler som oftest om strengere guards eller 'pre-conditions' ved funktionskald, og post-conditions, der tjekker såkaldt invariant opførsel inde i selve en funktions krop.

Men i Go implementeres kontrakter for at parametrisere typer og funktioner. Go's udviklere benytter termen 'generics', men betoner, at der ikke menes det samme med begrebet, som i sprog som C++, C#, Java eller Rust.

En kontrakt i Go skrives ved at angive de typer, som passer sammen med kontrakten. En funktion, der returnerer et minimum at to værdier, kan implementeres ved at definere en kontrakt, der inkluderer alle typer, som har en <-operator, som i eksemplet herunder.

contract Ordered(T) {
    T int, int8, int16, int32, int64,
        uint, uint8, uint16, uint32, uint64, uintptr,
        float32, float64,
        string
}
 
func Min (type T Ordered) (a, b T) T {
    if a < b {
        return a
    }
    return b
}

Når funktionen kaldes, angives både en type og en værdi, så som Min(int)(2,-7).

Designerne bag ideen mener, at det på denne måde bliver api'ets skaber, der skal håndtere kompleksiteten, og ikke api'ets brugere.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (0)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize