Teswirler (3)

Ýüklenýär...
User Avatar

Software Engineer | Creator

Sizde ýalňyşlyk bar! | Nädip Go-da ýalňyşlyklary tutmaly

1 minut alar


Programma döredilip ir döwründe ýalňyşlyklar hökman bolýar, siz käbir programmalarda duşuşyp görensiňiz üznüksiz ýüklemegi ýa-da käbir suratlaryň gelmeýändigi, ýa-da satyn aljak bolýan harydyň kabul edilmeýändigini. Şu hemme ýalňyşlyklary tutup çözülýänçä wagt gerek, ýöne bu ulanyjylary we programmanyň eýesini howply ýagdaýda düşürýär.

Go dilde hemiýa funksiýalardan ýalňyşlyk parametri yzyna gaýtarylýar.

Mysal üçin bir kod ýazaly

package main

import (
	“fmt”
)

func divide(x, y float64) (float64, error) {
	if y == 0 {
		return 0, fmt.Errorf(“cannot divide by zero”)
	}
	return x / y, nil
}

func main() {
	_, err := divide(10, 2)
	if err != nil {
		fmt.Println(“division err:”, err)
	}

	_, err = divide(10, 0)
	if err != nil {
		fmt.Println(“division err:”, err)
	}
}

```

Şu mysalda funksiýa bize iki jogap gaýtarýar, birinji bölmegiň netijesi, ikinji error. Şu error-yň barlygyna görä biziň indiki etmeli situasiýalarymyzy çagyrýan funksyýada ýazyp çykmaly.

Error tipi Golang-yň içki interfeýsi bolup dur. Belli bir ýagdaýda ýalňyşlygyň bolmagy garaşylýan bolsa şu ýalňyşlygy fmt.Errorf() standart pakety bilen döredip bileris.

We şu ýalňyşlygyň gaýtarylmasy birnäçe funksiýalar üstünden hem geçip, yzy-yzyna habarlaryny goşup çykýar, netijede umunylykda log-y seredeňizde doly informasiýaly we düşnükli bolar we ýalňyşlygyň sebäbini tapmak ýeňil bolar.

Iň soňunda biz şular ýaly gysgaça we düşnükli jogap alyp bileris:https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.tiredsg.dev%2Fblog%2Fwrapping-multiple-errors-golang%2F&psig=AOvVaw1NqeCVcURV9zeGEKc2IWpq&ust=1725173900200000&source=images&cd=vfe&opi=89978449&ved=0CBQQjRxqFwoTCPje4pvUnogDFQAAAAAdAAAAABAE

> division err: cannot divide by zero

https://youtu.be/l7IMpTZUI9M

31 |