So kehren Sie nach der Genesung von Golang zurück

(*-*)浩
Freigeben: 2019-12-17 10:43:17
Original
4530 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage