diff --git a/src/idl_gen_go.cpp b/src/idl_gen_go.cpp index 6bbc5dc89226..837f30f8929e 100644 --- a/src/idl_gen_go.cpp +++ b/src/idl_gen_go.cpp @@ -1111,11 +1111,16 @@ class GoGenerator : public BaseGenerator { const std::string offset = field_var + "Offset"; if (IsString(field.value.type)) { - code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n"; - code += "\tif t." + field_field + " != \"\" {\n"; - code += "\t\t" + offset + " = builder.CreateString(t." + field_field + - ")\n"; - code += "\t}\n"; + if (!field.IsRequired()) { + code += "\t" + offset + " := flatbuffers.UOffsetT(0)\n"; + code += "\tif t." + field_field + " != \"\" {\n"; + code += "\t\t" + offset + " = builder.CreateString(t." + field_field + + ")\n"; + code += "\t}\n"; + } else { + code += "\t" + offset + " := builder.CreateString(t." + field_field + + ")\n"; + } } else if (IsVector(field.value.type) && field.value.type.element == BASE_TYPE_UCHAR && field.value.type.enum_def == nullptr) {