in cty.go [70:96]
func GoTypeToCtyType(goType reflect.Type) cty.Type {
if goType == nil {
return cty.NilType
}
switch goType.Kind() {
case reflect.Bool:
return cty.Bool
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
return cty.Number
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
return cty.Number
case reflect.Float32, reflect.Float64:
return cty.Number
case reflect.String:
return cty.String
case reflect.Slice:
elemType := GoTypeToCtyType(goType.Elem())
return cty.List(elemType)
case reflect.Map:
valueType := GoTypeToCtyType(goType.Elem())
return cty.Map(valueType)
case reflect.Struct:
return StructToCtyType(goType)
default:
return cty.NilType
}
}