diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index 30be799..072ec5b 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -509,7 +509,7 @@
 
     f_consts_ <<
               go_package() <<
-              render_includes() <<              
+              render_includes() <<
               go_autogen_comment();
 
     f_const_values_ << endl << "func init() {" << endl;
@@ -526,8 +526,18 @@
     string unused_prot = "";
 
     for (size_t i = 0; i < includes.size(); ++i) {
-        result += "\t\"" + gen_package_prefix_ + get_real_go_module(includes[i]) + "\"\n";
-        unused_prot += "var _ = " + get_real_go_module(includes[i]) + ".GoUnusedProtection__\n";
+        string go_module = get_real_go_module(includes[i]);
+        size_t found = 0;
+        for (size_t j = 0; j < go_module.size(); j++) {
+            // Import statement uses slashes ('/') in namespace
+            if (go_module[j] == '.') {
+                go_module[j] = '/';
+                found = j + 1;
+            }
+        }
+
+        result += "\t\"" + gen_package_prefix_ + go_module + "\"\n";
+        unused_prot += "var _ = " + go_module.substr(found) + ".GoUnusedProtection__\n";
     }
 
     if (includes.size() > 0) {
@@ -3092,7 +3102,13 @@
     t_program* program = ttype->get_program();
 
     if (program != NULL && program != program_) {
-        return get_real_go_module(program) + "." + ttype->get_name();
+        string module(get_real_go_module(program));
+        // for namespaced includes, only keep part after dot.
+        size_t dot = module.rfind('.');
+        if (dot != string::npos) {
+            module = module.substr(dot + 1);
+        }
+        return module + "." + ttype->get_name();
     }
 
     return ttype->get_name();
diff --git a/lib/go/test/IncludesTest.thrift b/lib/go/test/IncludesTest.thrift
index 6c7308b..6f80e6b 100644
--- a/lib/go/test/IncludesTest.thrift
+++ b/lib/go/test/IncludesTest.thrift
@@ -18,17 +18,23 @@
 #
 
 include "ThriftTest.thrift"
+include "NamespacedTest.thrift"
 
 const ThriftTest.UserId USERID = 42
+const NamespacedTest.UserId USERID1 = 41
 const ThriftTest.MapType MAPCONSTANT = {'hello':{}, 'goodnight':{}}
 
+const i32 TWO = NamespacedTest.Stuff.TWO
+const i32 THREE = NamespacedTest.THREE
+
 struct testStruct {
   1: list<ThriftTest.Numberz> listNumbers
 }
 
 struct TestStruct2 {
   1: testStruct blah,
-  2: ThriftTest.UserId id
+  2: ThriftTest.UserId id,
+  3: NamespacedTest.Stuff stuff,
 }
 
 service testService extends ThriftTest.SecondService {
@@ -42,4 +48,10 @@
 
 service ExtendedService extends testService {
   void extendedMethod(),
+  NamespacedTest.StuffStruct extendedMethod2(),
 }
+
+service Extended2Service extends NamespacedTest.NamespacedService {
+  void extendedMethod3(),
+}
+
diff --git a/lib/go/test/Makefile.am b/lib/go/test/Makefile.am
index b5713c0..9005e99 100644
--- a/lib/go/test/Makefile.am
+++ b/lib/go/test/Makefile.am
@@ -21,12 +21,13 @@
 THRIFTTEST = $(top_srcdir)/test/ThriftTest.thrift
 
 # Thrift for GO has problems with complex map keys: THRIFT-2063
-gopath: $(THRIFT) $(THRIFTTEST) IncludesTest.thrift
+gopath: $(THRIFT) $(THRIFTTEST) IncludesTest.thrift NamespacedTest.thrift
 	mkdir -p gopath/src
 	grep -v list.*map.*list.*map $(THRIFTTEST) > ThriftTest.thrift
 	$(THRIFT) --gen go:thrift_import=thrift -r IncludesTest.thrift
 	ln -nfs ../../gen-go/ThriftTest gopath/src/ThriftTest
 	ln -nfs ../../gen-go/IncludesTest gopath/src/IncludesTest
+	ln -nfs ../../gen-go/lib gopath/src/lib
 	ln -nfs ../../../thrift gopath/src/thrift
 	touch gopath
 
diff --git a/lib/go/test/NamespacedTest.thrift b/lib/go/test/NamespacedTest.thrift
new file mode 100644
index 0000000..1bb2fc4
--- /dev/null
+++ b/lib/go/test/NamespacedTest.thrift
@@ -0,0 +1,40 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+include "ThriftTest.thrift"
+
+namespace go lib.go.test.NamespacedTest
+
+enum Stuff {
+  ONE = 1,
+  TWO = 2,
+}
+
+const i32 THREE = 3;
+
+typedef i64 UserId
+
+struct StuffStruct {
+  2: Stuff stuff,
+}
+
+service NamespacedService {
+  ThriftTest.UserId getUserID(),
+}
+
