I want to fork Ethereum(go implementation) to make another new public chain which should start again from the block zero but keeping all other parameters same as in main chain. Please guide me with all the steps to do the same.
If you start again from block zero your it is not a fork, but a new blockchain from the scratch.
“Fork” means that if the current blockchain is at block N at the fork instant, the forked blockchain shall be identical up to block N, free to be different from block N+1.
For your aim it should be enough to choose the parameters for the genesis block (i.e. block zero) and to start the blockchain.
Make a simple research to define the few parameters value to write in block zero you need. The true Ethereum block zero (that from the current chain) described a blockchain parameters set different from that today in use (you need to understand what you exactly need for your application).