Maison > développement back-end > Golang > Introduction aux fonctions du langage Go

Introduction aux fonctions du langage Go

Libérer: 2019-11-30 14:52:23
avant
2243 Les gens l'ont consulté

Introduction aux fonctions du langage Go

Les différences entre les fonctions Go et certaines autres langues

1. Différents formats de fonctions

func GetMsg(i int) (r string) {
    fmt.Println(i)
    r = "hi"
    return r
 
}
Copier après la connexion

func indique qu'il s'agit de Fonction

GetMsg est le nom de la fonction

(i int) La fonction reçoit un paramètre int

(r string) La fonction renvoie une valeur de retour de type chaîne

2. Les fonctions peuvent renvoyer plusieurs valeurs de retour

Ceci est différent de c et php, mais identique à lua

func GetMsg(i int) (r string, err string) {
    fmt.Println(i)
    r = "hi"
    err = "no err"
    return r,err
 
}
Copier après la connexion

3.

defer signifie "appelé lorsque la fonction se termine". Surtout lors de la lecture et de l'écriture de fichiers, vous devez appeler l'opération de fermeture après l'ouverture. Utilisez defer

pour l'opération de fermeture. signifie que close n'est pas appelé immédiatement après file.Open, mais file.Close() est appelé lorsque return false Cela évite efficacement le problème de fuite de mémoire en langage C.

4. Difficile à comprendre : paniquer, récupérer et différer

différer : Recommandé :

Introduction au go defer (fonction go delay)

Panique et Récupération, nous les considérons comme lancer et attraper dans d'autres langues

L'exemple suivant :

func ReadFile(filePath string)(){
    file.Open(filePath)
    defer file.Close()
     
    if true {
        file.Read()
    } else {
        return false
    }
 
}
Copier après la connexion

renvoyé :

ackage main
 
import "fmt"
 
func main() {
    f()
    fmt.Println("Returned normally from f.")
}
 
func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()
    fmt.Println("Calling g.")
    g(0)
    fmt.Println("Returned normally from g.")
}
 
func g(i int) {
    if i > 3 {
        fmt.Println("Panicking!")
        panic(fmt.Sprintf("%v", i))
    }
    defer fmt.Println("Defer in g", i)
    fmt.Println("Printing in g", i)
    g(i + 1)
}
Copier après la connexion
Lancer de panique L'information est émise et le la fonction se termine. Recover reçoit les informations et poursuit le traitement.

Recommandé :

tutoriel de langue Go

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!

Étiquettes associées:
source:cnblogs.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