func (s *State) goTypePrefix(prefix string, thriftType *parser.Type) string {
	switch thriftType.Name {
	case "binary":
		return "[]byte"
	case "list":
		return "[]" + s.goType(thriftType.ValueType)
	case "set":
		return "map[" + s.goType(thriftType.ValueType) + "]bool"
	case "map":
		return "map[" + s.goType(thriftType.KeyType) + "]" + s.goType(thriftType.ValueType)
	}

	// If the type is imported, then ignore the package.
	if state, newType, include := s.checkInclude(thriftType); include != nil {
		return state.goTypePrefix(include.Package()+".", newType)
	}

	// If the type is a direct Go type, use that.
	if goType, ok := thriftToGo[thriftType.Name]; ok {
		return goType
	}

	goThriftName := goPublicFieldName(thriftType.Name)
	goThriftName = prefix + goThriftName

	// Check if the type has a typedef to the direct Go type.
	rootType := s.rootType(thriftType)
	if _, ok := thriftToGo[rootType.Name]; ok {
		return goThriftName
	}
	if rootType.Name == "list" ||
		rootType.Name == "set" ||
		rootType.Name == "map" {
		return goThriftName
	}

	// If it's a typedef to another struct, then the typedef is defined as a pointer
	// so we do not want the pointer type here.
	if rootType != thriftType {
		return goThriftName
	}

	// If it's not a typedef for a basic type, we use a pointer.
	return "*" + goThriftName
}
func (s *State) goTypePrefix(prefix string, thriftType *parser.Type) string {
	switch thriftType.Name {
	case "binary":
		return "[]byte"
	case "list":
		return "[]" + s.goType(thriftType.ValueType)
	case "set":
		return "map[" + s.goType(thriftType.ValueType) + "]bool"
	case "map":
		return "map[" + s.goType(thriftType.KeyType) + "]" + s.goType(thriftType.ValueType)
	}

	// If the type is imported, then ignore the package.
	if state, newType, include := s.checkInclude(thriftType); include != nil {
		return state.goTypePrefix(include.Package()+".", newType)
	}

	// If the type is a direct Go type, use that.
	if goType, ok := thriftToGo[thriftType.Name]; ok {
		return goType
	}

	goThriftName := goPublicFieldName(thriftType.Name)
	goThriftName = prefix + goThriftName

	// Check if the type has a typedef to the direct Go type.
	rootType := s.rootType(thriftType)
	if _, ok := thriftToGo[rootType.Name]; ok {
		return goThriftName
	}
	if rootType.Name == "list" ||
		rootType.Name == "set" ||
		rootType.Name == "map" {
		return goThriftName
	}

	// If it's a typedef to another struct, then the typedef is defined as a pointer
	// so we do not want the pointer type here.
	if rootType != thriftType {
		return goThriftName
	}

	// If it's not a typedef for a basic type, we use a pointer.
	return "*" + goThriftName
}
func ( s * State ) goTypePrefix ( prefix string , thriftType * parser . Type ) string { switch thriftType . Name { case " " : return " " case " " : return " " + s . goType ( thriftType . ValueType ) case " " : return " " + s . goType ( thriftType . ValueType ) + " " case " " : return " " + s . goType ( thriftType . KeyType ) + " " + s . goType ( thriftType . ValueType ) } // If the type is imported, then ignore the package. if state , newType , include := s . checkInclude ( thriftType ) ; include != nil { return state . goTypePrefix ( include . Package ( ) + " " , newType ) } // If the type is a direct Go type, use that. if goType , ok := thriftToGo [ thriftType . Name ] ; ok { return goType } goThriftName := goPublicFieldName ( thriftType . Name ) goThriftName = prefix + goThriftName // Check if the type has a typedef to the direct Go type. rootType := s . rootType ( thriftType ) if _ , ok := thriftToGo [ rootType . Name ] ; ok { return goThriftName } if rootType . Name == " " || rootType . Name == " " || rootType . Name == " " { return goThriftName } // If it's a typedef to another struct, then the typedef is defined as a pointer // so we do not want the pointer type here. if rootType != thriftType { return goThriftName } // If it's not a typedef for a basic type, we use a pointer. return " " + goThriftName }
// goTypePrefix returns the Go type name for the given thrift type with the prefix.
goTypePrefix returns the Go type name for the given thrift type with the prefix .