Skip to main content

Do you support us?

Business address
0x1D24D8f27ea73ff604C7685246bdC6ae55bddaEF

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.


Comments

Popular posts from this blog

Rosicrucian cipher

In 1513 Cornelius Agrippa introduce early form Rosicrucian Cipher in his books Occult of Philosophy. Geometric and simple substitution cipher are well known ciphers      Pigpen , Freemason, Napoleon and tic tac toe ciphers in which alphabets or symbols arrange in grids.  This is an anagram, "How to reconstruct a data " lets encode the message.       Pigpen cipher , Rosicrucian and Tic tac toe Cipher                      Thank you have a good day.    

Life is all about decisions and repeat your routine

Life is all about Decisions and repeat our routine is an excellent idea which i show you within a moment. Everyday we take so many decisions based on environment conditions, circumstances. Each decision based on cause and effect philosophy. Programmer are wizards who create own world with data and structures. Without data or structure our world is nothing. Conditions: Conditions help us to take decision based under certain circumstances, such as if a number divisible by 2 at least two times then it's said to be double even. package main import ( "fmt" ) func main() { const divisible =2 var even int = 4 if even%divisible == 0 { n := even/divisible n /= divisible if n ==1 { fmt.Println("Doubly Even")  } }   } If you're a developer then you you know this code quite different from other languages syntax. In most languages, you see like this "if (condition)". Yeah it's different but this language compilati...

Without this Agent , mission doesn't accomplish?

If you play military games such as Delta force , IGI Project , commandos etc . You familiar about in your team. Each member of team are unique in their skills. Some are snipers , short gun , hackers, communication officer. Now I will introduce golang special agent which are quite helpful in most of time.                 Variadic Function  will show in a moment! Variadic Function:             Variadic  Functions means a function that arguments varing. In variadic function ... called ellipsis.   package main import ( "fmt" ) func main() { values := []int{1,2,3} fmt.Println("Value[0]",seriesAdd(values[0])) fmt.Println("Total", seriesAdd(values...)) } func seriesAdd(x ...int)int{ var count int = 0 for _, v := range x{ count+= v } return count } Conditions :     Before passing to the variadic function array must be slice.               ...