2017-11-30 3 views
0

Die Bibliothek, die ich mit der DB arbeiten bin mit bietet komfortable Schnittstelle ohne Speichern/Laden DatenWie ändere ich das Interface?

Put(c context.Context, key *Key, src interface{}) (*Key, error) 
Get(c context.Context, key *Key, dst interface{}) error 

jedoch zu Gießen, kann ich nicht verstehen, wie GET Methode möglicherweise funktionieren kann. Ich habe versucht, das Verhalten mit dem einfachsten Snippet zu replizieren, aber es hat nicht funktioniert.

import "fmt" 

type MyType struct { 
    inside string 
} 

func setVal(dst *MyType) { 
    someVal := MyType{"new"} 
    *dst = someVal 
} 

func setValGen(dst interface{}) { 
    someVal := MyType{"new"} 
    dst = someVal 
} 


func main() { 
    typeDstA := MyType{"old"} 
    setVal(&typeDstA) 
    fmt.Println(typeDstA)  //changed to new 

    typeDstB := MyType{"old"} 
    setValGen(&typeDstB) 
    fmt.Println(typeDstB)  //remains old 
} 

Wie machen sie Get Funktion interface{} übernehmen und den Zeiger Ziel ändern?

+0

Verwandte/Mögliche doppelt: [Ändern des Zeigertyp und Wert unter Schnittstelle mit Reflexion] (https://stackoverflow.com/questions/46342228/changing-pointer-type-and-value- Unterschnittstelle mit Reflexion/46342394 # 46342394). – icza

Antwort

Verwandte Themen