The meanings overlap.
In the most basic meaning, "struggle" emphasizes effort, while "fight" emphasizes the intention to hurt, injure, kill, or destory.
A "struggle" can be nonviolent: "I struggled to lift the heavy canoe onto the roof of the car." You aren't trying to destroy or damage the canoe!
A "fight" is usually violent. Even in a boxing match, which is often called a "fight," the goal is to injure the opponent slightly (by knocking him unconscious).
A "struggle" often refers to something that occurs over a long time, with moments where one side or the other is gaining the advantage. Thus, wars as "struggles," battles are "fights." A long war that is supposedly being fought for a great moral cause might be called a "struggle;" Abraham Lincoln's famous Gettysburg address, about the American Civil War, says "The brave men, living and dead, who struggled here, have consecrated it..." (made it holy).
Stephen Crane wrote a novel about the Civil War called "The Red Badge of Courage." In it, the protagonist begins by wishing to witness "a Greeklike struggle," that is, a grand and glorious business like Homer's Iliad, the epic poem about the Trojan War. Later, confronted by the reality of death and killing, "A little panic-fear grew in his mind. As his imagination went forward to a fight, he saw hideous possibilities."
In a famous speech, General George Patton used the word "fight" in a context that illustrates the overtones of the word. (Apologies in advance to any Germans reading this).
"We'll win this war, but we'll win it only by fighting and showing the Germans that we've got more guts than they have or ever will have. We're not just going to shoot the bastards, we're going to rip out their living goddamned guts and use them to grease the treads of our tanks. We're going to murder those lousy Hun c*******ers by the bushel-f***ing-basket."