Szukaj…


Uwagi

Należy zwrócić uwagę na jedną rzecz - typy, które mają zerową wartość zerową, takie jak łańcuchy, liczby całkowite, zmiennoprzecinkowe, boole i struktury, nie mogą być ustawione na zero.

Podstawowe wartości zerowe

Zmienne w Go są zawsze inicjowane niezależnie od tego, czy podajesz im wartość początkową, czy nie. Każdy typ, w tym typy niestandardowe, ma wartość zerową, dla której jest ustawiony, jeśli nie otrzyma wartości.

var myString string      // "" - an empty string
var myInt int64          // 0 - applies to all types of int and uint
var myFloat float64      // 0.0 - applies to all types of float and complex
var myBool bool          // false
var myPointer *string    // nil
var myInter interface{}  // nil

Dotyczy to również map, wycinków, kanałów i typów funkcji. Te typy zostaną zainicjowane do zera. W tablicach każdy element jest inicjowany na wartość zerową odpowiedniego typu.

Bardziej złożone wartości zerowe

W plasterkach wartość zero jest pustym plasterkiem.

var myIntSlice []int    // [] - an empty slice

Użyj make aby utworzyć plasterek wypełniony wartościami, wszelkie wartości utworzone w plasterku zostaną ustawione na wartość zerową typu plasterka. Na przykład:

myIntSlice := make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println(myIntSlice[3])
// Prints 0

W tym przykładzie myIntSlice jest myIntSlice int zawierającym 5 elementów, z których wszystkie mają wartość 0, ponieważ jest to zero dla typu int .

Możesz również utworzyć plasterek za pomocą new , spowoduje to utworzenie wskaźnika do plasterka.

myIntSlice := new([]int)        // &[] - a pointer to an empty slice
*myIntSlice = make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println((*myIntSlice)[3])
// Prints 0

Uwaga: Wskaźniki plasterków nie obsługują indeksowania, więc nie możesz uzyskać dostępu do wartości za pomocą myIntSlice[3] , zamiast tego musisz to zrobić jak (*myIntSlice)[3] .

Struct Zero Values

Podczas tworzenia struktury bez inicjalizacji, każde pole struktury jest inicjowane do odpowiedniej wartości zerowej.

type ZeroStruct struct {
    myString string
    myInt    int64
    myBool   bool
}

func main() {
    var myZero = ZeroStruct{}
    fmt.Printf("Zero values are: %q, %d, %t\n", myZero.myString, myZero.myInt, myZero.myBool)
    // Prints "Zero values are: "", 0, false"
}

Array Zero Values

Zgodnie z blogiem Go :

Tablice nie muszą być inicjowane jawnie; zerowa wartość tablicy jest gotową do użycia tablicą, której elementy same są zerowane

Na przykład myIntArray jest inicjowany z zerową wartością int , która wynosi 0:

var myIntArray [5]int     // an array of five 0's: [0, 0, 0, 0, 0]


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow