Как контролировать инициализацию переменной Go?
Например, в языках Java, C++, Python есть конструктор, при создании обьекта, я могу обязательно потребовать задать значения для переменных класса.
class User {
private String m_name;
User(String name){
m_name = name;
}
void print(){
System.out.println("User name is " + m_name);
}
}
class Main {
public static void main(String[] args) {
User user = new User(); //ошибка компиляции
User user = new User("Alex"); //будет работать
user.print(); // выведет "User name is Alex"
}
}
Как мне реализовать такое же поведение в go?
type User struct {
name string
}
func (user *User) print() {
println("User name is " + user.name)
}
func main() {
user := User{name:"Alex"}
user.print() // Выведет User name is Alex
//сделать так, чтобы код, который ниже не работал, а требовал ввести name
user := User{}
user.print() // Выведет User name is
}
Или Go так не умеет и нужно самому в методе проверять?:
if name == "" {что то делать}