2017-10-19 38 views
-3

J'utilise golang pour construire un serveur web. Et j'utilise l'architecture MVC.
Comment définir une fonction membre statique?

Maintenant, je ne sais pas comment faire fonctionner le membre statique.

Par exemple, je me suis un struct User comme l'un de mes modèles:

type User struct{ 
    name string 
    password string 
} 

De toute évidence, je dois aussi les fonctions suivantes:

func (user User)addUser(){ 
    conn := ConnToDB() 
    query = "insert into user (name, password) values ('" + user.name + "', '" + user.password + "');" 
    conn.execute(query) 
} 
func (user User)changeNameById(id int){ 
    ... 
} 

Cependant, je ne Je ne sais pas comment faire une fonction pour lister tous les noms. En Java ou Python, une telle fonction doit être une fonction membre statique de la classe User, dans ce cas, nous pouvons appeler la fonction comme ceci:

User.listNames(); 

Comment faire la même chose en golang?

+4

"Comment faire la même chose dans golang?" Vous ne pouvez pas. Il y a simplement des fonctions membres _are_ _no_ static dans Go car il n'y a pas de classes. Mais vous avez peut-être entendu parler des fonctions. – Volker

Répondre

1

Vous écrivez simplement une fonction et non pas une fonction membre:

func listUserNames() []string { 
    ... 
} 

Lorsque vous appelez à partir de votre forfait, il sera tout simplement listUserNames()

Lorsque vous appelez de l'extérieur de votre colis, il sera préfixé par le nom de votre paquet. (Aussi, vous devrez rendre la fonction publique afin de l'appeler à partir d'un autre paquet)