kpa6uu
@kpa6uu
Программист Талибана [Пыхерский Алибаба]

Почему возникают ошибки присвоения при создании типа?

При попытке забилдить приложение возникают ошибки:

# command-line-arguments
./main.go:10: implicit assignment of unexported field 'login' in user.User literal
./main.go:11: implicit assignment of unexported field 'password' in user.User literal


main.go:

package main

import (
	"fmt"
	"packageTest/user"
)

func main() {
	var bob = user.User {
		"Bob",
		"superbob",
	}

	fmt.Println(bob.GetLogin())
}

user/user.go:

package user

type User struct {
	login string
	password string
}

func (User *User) GetLogin() string {
	return User.login
}

Как мне эту ошибку забороть? Что я делаю не так?

Пакет nsa в данном случае не используется.
FVuCcldpC0o.jpg

- - - - - - - - - - - - - - - - - - - - - -

UPD

Окей, переименовав переменные структуры login, password в CamelCase (сделали пабликами) - всё стало ок, ошибка пропала.
Но как мне быть, если мне нужно установить в данном образном конструкторе приватные переменные, доступ к котором будет осуществляться через методы структуры?

type User struct {
	Login string
	Password string
}


- - - - - - - - - - - - - - - - - - - - - -

UPD

Судя по
www.golangpatterns.info/object-oriented/constructors
https://stackoverflow.com/questions/18125625/const...

всё плохо
  • Вопрос задан
  • 675 просмотров
Решения вопроса 1
XXXXPro
@XXXXPro
Fullstack Web developer
Вместо конструктора в Go используется функция NewКласс, т.е. в данном случае NewUser. Ее надо определить в package user:
func NewUser(login,password) {
return &User { login, password }
}

А вызывать из main вот так:
var bob = user.NewUser("Bob","superbob");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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