Heim  >  Artikel  >  Backend-Entwicklung  >  So kehren Sie nach der Genesung von Golang zurück

So kehren Sie nach der Genesung von Golang zurück

(*-*)浩
(*-*)浩Original
2019-12-17 10:43:174531Durchsuche

So kehren Sie nach der Genesung von Golang zurück

Wiederherstellen

Obwohl es keinen Try-Catch-Mechanismus gibt, verfügt Go tatsächlich über einen ähnlichen Wiederherstellungsmechanismus. Die Funktion ist etwas schwächer und die Verwendung ist sehr einfach: (Empfohlenes Lernen: GO )

package main
import "fmt"
func main() {
fmt.Printf("%d\n", cal(1, 2))
fmt.Printf("%d\n", cal(5, 2))
fmt.Printf("%d\n", cal(5, 0))
fmt.Printf("%d\n", cal(9, 2))
}
func cal(a, b int) int {
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
return a / b
}

Zunächst muss jeder die Rolle des Defer verstehen ähnelt dem Destruktor im objektorientierten Objekt. In dieser Funktion wird es ausgeführt, wenn es beendet wird, auch wenn es durch Panik beendet wird.

Jedes Mal, wenn die Cal-Funktion beendet wird, prüft sie, ob eine Ausnahme vorliegt. Wenn sie auftritt, können wir sie behandeln, z. B. Protokolle aufzeichnen, damit das Programm weiter ausgeführt werden kann.

package main

import (
        "errors"
        "fmt"
        "math"
)

func main() {
        _, err := IntFromInt64(math.MaxInt32 + 1)
        if err != nil {
                fmt.Println(err)
        }
}

func ConvertInt64ToInt(i64 int64) int {
        if math.MinInt32 <= i64 && i64 <= math.MaxInt32 {
                return int(i64)
        }
        panic("can&#39;t convert int64 to int")
}

func IntFromInt64(i64 int64) (i int, err error) {//这里
        defer func() {
                if err2 := recover(); err2 != nil {
                        i = 0//这里
                        err = errors.New("ttt")//这里
                }
        }()
        i = ConvertInt64ToInt(i64)
        return i, nil
}

Hauptidee: Verwenden Sie defer, um den Wert der Rückgabevariablen (im Voraus als i und err bestimmt) vor der Rückgabe zu ändern

Das obige ist der detaillierte Inhalt vonSo kehren Sie nach der Genesung von Golang zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn