func newUser(username string, firstname string, lastname string, email string, token string) user {
var funcUser = new(user)
funcUser.id = uuid.New().String()
funcUser.username = username
funcUser.firstname = firstname
funcUser.lastname = lastname
funcUser.email = email
return *funcUser
}
// var name type = func(params)
var postUser user = newUser(postUsername, postFirstname, postLastname, postEmail, token)
// for Export the struct -> name must be uppercase: user -> User, id -> Id, ...
type user struct {
id string `json:"id"`
firstname string `json:"firstname"`
lastname string `json:"lastname"`
email string `json:"email"`
username string `json:"username"`
token string `json:"token"`
}
func newUser() (User, string) {
if 1 == 1 {
user := User{}
return user, "email already exists"
} else {
var currentUser = new(User)
...
return *currentUser, ""
}
}
Wenn man z.B. zwei Return-Typen hat und eines davon ein Struct ist, kann man nicht nil
als Struct zurückgeben. Normalerweise gibt man dann ein leeres Struct zurück:
(Nil
kann man nur verwenden wenn man ein Slice, eine Variable oder ein Pointer zurückgibt.)
func test()(User, err){
// don't work
return nil, err
// works
return User{}, err
}
cannot use nil as type model.Article in return argument
func getData() ([]data, error){
return []data, nil
}
Right pattern for returning slice of structs from function in golang