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

Introduction aux fonctions du langage Go

尚
avant
2019-11-30 14:52:232271parcourir

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
 
}

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
 
}

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
    }
 
}

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)
}

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!

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