@@ -134,6 +134,7 @@ func main() {
134134 if err != nil {
135135 if err, ok := err.(* inputError); ok {
136136 fmt.Println(err)
137+ fmt.Printf("Message: %s\n", err.Error())
137138 fmt.Printf("Missing Field is %s\n", err.getMissingField())
138139 }
139140 }
@@ -252,21 +253,34 @@ func Unwrap(err error) error
252253منظورمان از unwrap کردن این است که، اگر خطایی را {{< tooltip text=" هم پوشانی" note=" wrap" >}} کرده باشیم با استفاده unwrap میتوانیم آن خطا را ببینیم.
253254
254255{{< play >}}
256+ package main
257+
255258import (
256- " errors"
257- " fmt"
259+ " errors"
260+ " fmt"
258261)
259- type errorOne struct {}
262+
263+ type errorOne struct {
264+ cause error
265+ }
266+
260267func (e errorOne ) Error () string {
261- return " Error One happened"
268+ return " Error One happened"
262269}
270+
271+ func (e errorOne ) Unwrap () error {
272+ return e.cause
273+ }
274+
263275func main () {
264- e1 := errorOne{}
265- e2 := fmt.Errorf (" E2: % w" , e1)
266- e3 := fmt.Errorf (" E3: % w" , e2)
267- fmt.Println (errors.Unwrap (e3))
268- fmt.Println (errors.Unwrap (e2))
269- fmt.Println (errors.Unwrap (e1))
276+ root := errors.New (" root cause" )
277+ e1 := errorOne{cause: root}
278+ e2 := fmt.Errorf (" E2: % w" , e1)
279+ e3 := fmt.Errorf (" E3: % w" , e2)
280+
281+ fmt.Println (errors.Unwrap (e3)) // e2
282+ fmt.Println (errors.Unwrap (e2)) // e1
283+ fmt.Println (errors.Unwrap (e1)) // root
270284}
271285{{< /play >}}
272286
0 commit comments