diff --git a/lib/go/test/tests/client_error_test.go b/lib/go/test/tests/client_error_test.go
index 829a1dd..838883d 100644
--- a/lib/go/test/tests/client_error_test.go
+++ b/lib/go/test/tests/client_error_test.go
@@ -402,7 +402,7 @@
 	thing := errortest.NewTestStruct()
 	thing.M = make(map[string]string)
 	thing.L = make([]string, 0)
-	thing.S = make(map[string]bool)
+	thing.S = make(map[string]struct{})
 	thing.I = 3
 
 	err := thrift.NewTTransportException(thrift.TIMED_OUT, "test")
@@ -434,7 +434,7 @@
 	thing := errortest.NewTestStruct()
 	thing.M = make(map[string]string)
 	thing.L = make([]string, 0)
-	thing.S = make(map[string]bool)
+	thing.S = make(map[string]struct{})
 	thing.I = 3
 
 	err := thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, errors.New("test"))
diff --git a/lib/go/test/tests/thrifttest_driver.go b/lib/go/test/tests/thrifttest_driver.go
index 915383f..1e0cf86 100644
--- a/lib/go/test/tests/thrifttest_driver.go
+++ b/lib/go/test/tests/thrifttest_driver.go
@@ -162,7 +162,7 @@
 		t.Fatal("TestStringMap failed")
 	}
 
-	setTestInput := map[int32]bool{1: true, 2: true, 3: true}
+	setTestInput := map[int32]struct{}{1: {}, 2: {}, 3: {}}
 	if r, err := client.TestSet(setTestInput); !reflect.DeepEqual(r, setTestInput) || err != nil {
 		t.Fatal("TestSet failed")
 	}
diff --git a/lib/go/test/tests/thrifttest_handler.go b/lib/go/test/tests/thrifttest_handler.go
index 50fe718..822a6c7 100644
--- a/lib/go/test/tests/thrifttest_handler.go
+++ b/lib/go/test/tests/thrifttest_handler.go
@@ -96,7 +96,7 @@
 	return thing, nil
 }
 
-func (p *ThriftTestHandler) TestSet(thing map[int32]bool) (r map[int32]bool, err error) {
+func (p *ThriftTestHandler) TestSet(thing map[int32]struct{}) (r map[int32]struct{}, err error) {
 	return thing, nil
 }
 
diff --git a/lib/go/thrift/serializer_test.go b/lib/go/thrift/serializer_test.go
index 3cdb387..06d27a1 100644
--- a/lib/go/thrift/serializer_test.go
+++ b/lib/go/thrift/serializer_test.go
@@ -85,7 +85,7 @@
 	m.Bin = make([]byte, 10)
 	m.StringMap = make(map[string]string, 5)
 	m.StringList = make([]string, 5)
-	m.StringSet = make(map[string]bool, 5)
+	m.StringSet = make(map[string]struct{}, 5)
 	m.E = 2
 
 	s, err := t.WriteString(&m)
@@ -119,7 +119,7 @@
 	m.Bin = make([]byte, 10)
 	m.StringMap = make(map[string]string, 5)
 	m.StringList = make([]string, 5)
-	m.StringSet = make(map[string]bool, 5)
+	m.StringSet = make(map[string]struct{}, 5)
 	m.E = 2
 
 	s, err := t.WriteString(&m)
diff --git a/lib/go/thrift/serializer_types_test.go b/lib/go/thrift/serializer_types_test.go
index 10f4737..38ab8d6 100644
--- a/lib/go/thrift/serializer_types_test.go
+++ b/lib/go/thrift/serializer_types_test.go
@@ -97,18 +97,18 @@
 func MyTestEnumPtr(v MyTestEnum) *MyTestEnum { return &v }
 
 type MyTestStruct struct {
-	On         bool              `thrift:"on,1" json:"on"`
-	B          int8              `thrift:"b,2" json:"b"`
-	Int16      int16             `thrift:"int16,3" json:"int16"`
-	Int32      int32             `thrift:"int32,4" json:"int32"`
-	Int64      int64             `thrift:"int64,5" json:"int64"`
-	D          float64           `thrift:"d,6" json:"d"`
-	St         string            `thrift:"st,7" json:"st"`
-	Bin        []byte            `thrift:"bin,8" json:"bin"`
-	StringMap  map[string]string `thrift:"stringMap,9" json:"stringMap"`
-	StringList []string          `thrift:"stringList,10" json:"stringList"`
-	StringSet  map[string]bool   `thrift:"stringSet,11" json:"stringSet"`
-	E          MyTestEnum        `thrift:"e,12" json:"e"`
+	On         bool                `thrift:"on,1" json:"on"`
+	B          int8                `thrift:"b,2" json:"b"`
+	Int16      int16               `thrift:"int16,3" json:"int16"`
+	Int32      int32               `thrift:"int32,4" json:"int32"`
+	Int64      int64               `thrift:"int64,5" json:"int64"`
+	D          float64             `thrift:"d,6" json:"d"`
+	St         string              `thrift:"st,7" json:"st"`
+	Bin        []byte              `thrift:"bin,8" json:"bin"`
+	StringMap  map[string]string   `thrift:"stringMap,9" json:"stringMap"`
+	StringList []string            `thrift:"stringList,10" json:"stringList"`
+	StringSet  map[string]struct{} `thrift:"stringSet,11" json:"stringSet"`
+	E          MyTestEnum          `thrift:"e,12" json:"e"`
 }
 
 func NewMyTestStruct() *MyTestStruct {
@@ -155,7 +155,7 @@
 	return p.StringList
 }
 
-func (p *MyTestStruct) GetStringSet() map[string]bool {
+func (p *MyTestStruct) GetStringSet() map[string]struct{} {
 	return p.StringSet
 }
 
@@ -366,7 +366,7 @@
 	if err != nil {
 		return PrependError("error reading set begin: ", err)
 	}
-	tSet := make(map[string]bool, size)
+	tSet := make(map[string]struct{}, size)
 	p.StringSet = tSet
 	for i := 0; i < size; i++ {
 		var _elem3 string
@@ -375,7 +375,7 @@
 		} else {
 			_elem3 = v
 		}
-		p.StringSet[_elem3] = true
+		p.StringSet[_elem3] = struct{}{}
 	}
 	if err := iprot.ReadSetEnd(); err != nil {
 		return PrependError("error reading set end: ", err)
