2017-09-13 2 views
0

Ich verwende https://github.com/kataras/iris Golang Web Framework. Dies ist Mail von der letzten Frage hier gefragt folgen - Fetching Logged in User Info for display - Golang TemplateTyp Schnittstelle {} ist Schnittstelle ohne Methoden - Golang

ich endlich Code verwenden, die wie in der früheren Post erwähnt: -

ctx.Values().Get("user")

und der Wert, den Benutzer eingestellt ist oder ist "Struct" Typ: -

// users is struct below 

var user users 

// details are fetched from DB and assigned to user 
// like mentioned here http://go-database-sql.org/retrieving.html 
// Now value is set 
ctx.Values().Set("user", user); 

Aber nachdem der Wert immer, wenn ich in verschiedenen Handler und Druck verwendet werden: -

user := ctx.Values().Get("user") 
fmt.Println(user.ID) 

ich den Fehler: -

user.ID undefined (type interface {} is interface with no methods)

Ich brauche Hilfe in "Typ Behauptung" für die Schnittstelle. Wie kann ich über den Wert "Assert" schreiben?

Bitte lassen Sie mich wissen, was ist der richtige Weg, es zu tun. Danke

+0

Mögliches Duplikat von [Golang-Typ Schnittstelle {} ist Schnittstelle ohne Methoden] (https://stackoverflow.com/questions/32277884/golang-type-interface-is-interface-with-no-methods) –

Antwort

2

Ein type assertion tut genau das, behauptet, dass ein Wert Typ ist.

userID := user.(users).ID 

Verwenden Sie sie Typ Name, und es sollte funktionieren.

Verwandte Themen