Thursday, June 13, 2019

Panic is an art




Writing a good program



 Panic Joke
Hello, guys after a long time, I'm a writing my next blog called panic is an art. 
I will start in a moment. But First we revise our knowledge, it is mandatory for this article. 

Defer: As you know defer means free your resources or clean your memory before quite. You already know defer statement  will change program execution. Defer statement work in LIFO order. Multiple defer functions call gorounties. Goroutines are different from normal flow, it's look similar jump command in assembly language. I will show you how to play with goroutines.

Panic: Panic is a built-in function, provide by golang language. Panic is just like exceptions, however exception concepts are not using in golang. Panic is very useful in debugging. 
panic(error). Panic is also very useful when rare condition maybe or may not be possible. Panic and defer follow side by side. If you crash your program, compiler tell 
                  func g()    // error in line 3 etc
                  func f()
                  func main()

Recover:   If you want to solve exceptions in java or c++, you familiar about try catch block. Here in golang, recover is to regain normal flow of program, after crash or panic state. 
                                  if r := recover(); r != nil{ // code }
                
Code</>:

package main
import (
"fmt"
)
func main() {
f(4)
}

func f(n int)(){
for ; n != -1; n-- {
fmt.Println(n)
}
if n == -1{
fmt.Println("panic")
  panicState(n)
}
}
func panicState(n int){
defer func(){
if p := recover(); p!= nil{
fmt.Println(p)
}
fmt.Println("normal execution end")
}()
g(n)
}
func g(n int){
for i :=0; i < 5; i++{
n+=1
fmt.Println(n)
}
}


package main
import (
"fmt"
)
type Person struct{
name string
}
func main() {
var stds Person
var name string = "ali"
s := handle(&stds)
(*s).name = name
fmt.Println((*s).name)
}
func handle(std *Person)(*Person){
defer func(){
if t := recover(); t != nil {
fmt.Println("recovering")
panic(t)
}
}()
return std
}

Have a great day.


No comments:

Post a Comment

Do you support us?

Business address
0x1D24D8f27ea73ff604C7685246bdC6ae55bddaEF

Mighty Roman Empire's trail and err

  The Roman Empire's strength, fuel by economical corridor and best men's for the service but Golden days might be over when corrup...

Achieves