Cauchy-Schwartz Inequality

This is a question that has been bugging me for quite some time. When I was a sophomore in Linear Algebra the Professor gave us a proof of the Cauchy Schwarz inequality like so,

For any vectors u,v in R^n

| u*v | = | ||u||*||v|| * cos (theta)|

= ||u|| * ||v|| * |cos(theta)|

<= ||u|| * ||v|| * 1 since |cos(theta)|<=1

= ||u|| * ||v||

Now here is my question, the first step of this proof requires knowing that u*v= ||u||*||v||*cos(theta), which is easily proven using the Law of Cosines. But, the Law of Cosines doesn't necessarily work in R^n for n>3. Therefore, this proof only works for the case when n<=3. Am I correct? Or does the first step of the proof work in any dimension? I'm trying to make the transition from R^n to general normed vector spaces and I gotta get this stuff clear in my head!! Thanks for any replies.