use Instantiate clone a GUI object

I want to clone a GUI object:when press a button ,appear a clone button . but the position will change 
the code is follow ,anybody can modify for me? thank you!`  void OnGUI(){
    Rect rect=new Rect(0,0,100,50);
    if(GUI.Button(rect,"button"))
    {   rect.x+=50;
        Object clone;
        clone=Instantiate(gameObject);
    }
}`

The unity GUI is not object oriented therefore you cannot clone GUI artifacts like buttons, etc. They are (mostly) stateless methods on the GUI class. Check out some information on that here. The code you have above will clone the GameObject that your script is hung on which is almost certainly not what you want. If you are trying to spawn non-GUI things into the game, that typically works something like:

GameObject enemyPrefab= (GameObject)Resources.Load("Prefabs/MyEnemyCharacterModel");
GameObject newEnemy= (GameObject)GameObject.Instantiate(enemyPrefab);
newEnemy.name = "Enemy1";

That will place a clone of the enemy named "Enemy1" on the scene graph.

If you want to replicate a GUI button, the best way is probably in a for loop...Something like this

int numButtons = 1;

void OnGUI() {
  for(int i = 0; i < numButtons; i++)
  {
    Rect rect = new Rect(50*i,0,100,50);
    if(GUI.Button(rect, "button"))
       ++numButtons;
  }
}