Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-09 09:36:11
avant
1135 Les gens l'ont consulté

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)


}
Copier après la connexion

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()
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!