Maison >développement back-end >Golang >Pourquoi ne puis-je pas appeler directement la méthode serveur au lieu de simplement ajouter des variables intermédiaires ?

Pourquoi ne puis-je pas appeler directement la méthode serveur au lieu de simplement ajouter des variables intermédiaires ?

WBOY
WBOYavant
2024-02-09 09:36:111174parcourir

Pourquoi ne puis-je pas appeler directement la méthode serveur au lieu de simplement ajouter des variables intermédiaires ?

En PHP, pourquoi ne peut-on pas appeler directement la méthode serveur au lieu de simplement ajouter des variables intermédiaires ? C'est une question courante. L'éditeur PHP Apple y répondra pour vous. En PHP, nous utilisons généralement des pages frontales pour interagir avec les serveurs back-end. L'appel direct de méthodes serveur peut impliquer certains risques de sécurité, comme le fait d'être utilisé par des pirates pour effectuer des opérations malveillantes. Pour augmenter la sécurité, nous introduisons la notion de variables intermédiaires. En envoyant la requête frontale au serveur, et le serveur effectue ensuite les opérations correspondantes sur la base de la valeur de la variable intermédiaire, les risques de sécurité potentiels peuvent être efficacement réduits. De plus, l'utilisation de variables intermédiaires peut également augmenter la maintenabilité et l'évolutivité du code, rendant le code plus clair et plus facile à comprendre. En résumé, l'ajout de variables intermédiaires est une pratique sûre et fiable qui peut améliorer la qualité et la fiabilité de votre code.

Contenu de la question

J'écris un client pour mqtt. J'ai écrit un rappel pour mqtt.OnConnectHandler. Je souhaite écrire l'adresse de connexion du serveur d'impression.

var connectHandler mqtt.OnConnectHandler = func(c mqtt.Client) {
    
        // this is ok 
    options := c.OptionsReader()
    s := options.Servers()
        fmt.Printf("conn: %s success\n", s)

        // --------------------------------------
        // But it won't work like this
        // here have error: On servers。
        // cannot call pointer method Servers on mqtt.ClientOptionsReadercompilerInvalidMethodExpr

    o := c.OptionsReader().Servers()    
    fmt.Printf("conn: %s success\n", o)


}

Donc, j'ai découvert que je ne pouvais pas l'utiliser directement. Pourquoi? Ce n'est pas la même chose ? Pourquoi seules des variables intermédiaires peuvent-elles être utilisées pour recevoir ?

J'ai essayé deux méthodes. On ne réussit qu'une fois. Je pensais que les deux iraient bien.

Solution de contournement

En effet, Servers 方法是用指针接收器声明的。这意味着为了调用 Servers, le récepteur doit être adressable :

https://www.php.cn/link/753a043674f0193523abc1bbce678686

Les variables temporaires ne sont pas adressables. Ici :

c.OptionsReader().Servers()

c.OptionsReader() 返回一个不可寻址的值,因此您无法使用该值作为接收者来调用 Servers。当您将 c.OptionsReader 的返回值分配给一个变量时,它就变得可寻址,并且您可以使用该变量调用 Servers() .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer