func testC(cc Cc, st string) actually takes a copy of cc. So, even with locking on a mutex, you actually locking on 10 copies of it which are totally independent. So, your locking code has no effect.
Try changing testC function signature to
func testC(cc *Cc, st string). And then your call
go testC(&cc, strconv.Itoa(i)).