diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index a216c2b..43def5d 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -1130,20 +1130,21 @@
     // Check for field STOP marker and break
     out <<
         indent() << "if fieldTypeId == thrift.STOP { break; }" << endl;
-    // Switch statement on the field we are reading
-    bool first = true;
+
     string thriftFieldTypeId;
     // Generate deserialization code for known cases
     int32_t field_id = -1;
 
+    // Switch statement on the field we are reading, false if no fields present
+    bool have_switch = !fields.empty();
+    if( have_switch) {
+        indent(out) << "switch fieldId {" << endl;
+    }
+    
+    // All the fields we know
     for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
         field_id = (*f_iter)->get_key();
 
-        if (first) {
-            first = false;
-            indent(out) << "switch fieldId {" << endl;
-        }
-
         // if negative id, ensure we generate a valid method name
         string field_method_prefix("ReadField");
 
@@ -1152,8 +1153,9 @@
             field_id *= -1;
         }
 
+        out << 
+            indent() <<"case " << field_id << ":" << endl;
         indent_up();
-        out << "case " << field_id << ":" << endl;
         thriftFieldTypeId = type_to_enum((*f_iter)->get_type());
 
         if (thriftFieldTypeId == "thrift.BINARY") {
@@ -1167,13 +1169,23 @@
         indent_down();
     }
 
-    // In the default case we skip the field
-    if (!first) {
+    // Begin switch default case 
+    if( have_switch) {
         out <<
-            indent() << "default:" << endl <<
-            indent() << "  if err := iprot.Skip(fieldTypeId); err != nil {" << endl <<
-            indent() << "    return err" << endl <<
-            indent() << "  }" << endl <<
+            indent() << "default:" << endl;
+            indent_up();
+    }
+            
+    // Skip unknown fields in either case
+    out <<
+        indent() << "if err := iprot.Skip(fieldTypeId); err != nil {" << endl <<
+        indent() << "  return err" << endl <<
+        indent() << "}" << endl;
+
+    // End switch default case
+    if( have_switch) {
+        indent_down();
+        out <<
             indent() << "}" << endl;
     }
 
