Come utilizzare le asserzioni di tipo in Go quando si restituisce un tipo di interfaccia?

0

Una struttura a cui sto lavorando chiamata fieldDefinition contiene metadati relativi a un campo utilizzato da un oggetto nella mia app Web. Uno dei campi su fieldDefinition (diventa un po 'confuso) ha un aspetto simile al seguente:

type fieldDefinition struct {
    id string
    apiName string
    label string
    fieldType uint //Defined by a list of constants.
    defaultValue interface{}
}

Ho anche una funzione * sulla struct per recuperare il valore predefinito (l'impostazione richiede un po 'di logica) che attualmente restituisce letteralmente solo il tipo interface{} . A seconda del valore di fieldType vorrei che ci fosse qualche indicazione che il valore restituito è utilizzabile come il tipo fieldType dice che dovrebbe essere.

Ad esempio, se fieldType == FT_GEOLOCATION , allora voglio assicurarmi che il valore dell'interfaccia restituito sia della mia struttura Geolocation . Stavo osservando le asserzioni di tipo, ma non riesco a vedere alcun esempio di come sia usato in una situazione simile da cui imparare, e non penso di essere sicuro al 100% di come effettivamente funzioni.

Come potrei beneficiare delle asserzioni di tipo qui, e c'è un modo migliore / più accettato di farlo, o devo solo accettare che i tipi di interface{} sono difficili da garantire con validità?

    
posta leylandski 02.09.2015 - 10:29
fonte

1 risposta

1

Sembra che tu voglia una istruzione switch di tipo .

Ogni caso switch potrebbe verificare che fieldType sia impostato correttamente.

    
risposta data 02.09.2015 - 23:40
fonte

Leggi altre domande sui tag