@Kagtaviy

Как правильно вызвавать функцию?

Здравствуйте.
Хочу получить значение с бд с отдельной функции.
Вот функция запроса к бд:
func getusers(login string) string {
	client := redis.NewClient(&redis.Options{
		Addr:     conf.DBREDIS_PORT,
		Password: conf.PASSWORD_REDIS,
		DB:       0,
	})
	id, _ := client.HGet("admin:"+login, "id").Result()
	return id
}

Для входа в эту функцию нужно указать login который берется с сессии.
func RendMA(w http.ResponseWriter, r *http.Request) {
	session, _ := store.Get(r, "sess")

	login := session.Values["AName"]
	idp := getusers(login)

	fmt.Println("id", idp)
}


Компилятор ругается на вот эту часть idp := getusers(login)
cannot use login (type interface {}) as type string in argument to getusers: need type assertion (build)at line 25 col 1
Подскажите что не так?
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
0xcffaedfe
@0xcffaedfe
Developer & Reverser
Типы разные же вот компилятор о этом вам и говорит.

login := session.Values["AName"] где login у вас interface{}

В то время как func getusers(login string) принимает аргумент типа строка.

тобишь вам нужно написать функу как-то так

func RendMA(w http.ResponseWriter, r *http.Request) {
	session, _ := store.Get(r, "sess")

	login := session.Values["AName"]

	if loginStr, ok := login.(string); ok {
		idp := getusers(loginStr)
		fmt.Println("id", idp)
	} else {
		//
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы