¿Qué agregarías a un lenguaje de programación si fueras el diseñador?

Genéricos para ir!

También: variantes para ir. Y probablemente pares también.

Esto realmente simplificaría el lenguaje porque me permitiría deshacerme de los nulos y deshacerme de sus “valores cero” completamente arbitrarios para los tipos primitivos.

También me permitiría arreglar la estúpida forma en que manejan los errores. Lógicamente, una función que devuelve un código de error tiene dos posibilidades: devuelve un error o devuelve el valor correcto. ¡Así que Go, por supuesto, siempre devuelve ambos ! Básicamente, si obtiene un error, el resultado real es basura que no debe exponerse al usuario.

Además de esto, Go construye mágicamente los múltiples valores de retorno en el lenguaje en lugar de proporcionar un mecanismo más general para trabajar con pares.

En cambio, si Go usa una variante para errores, podría devolver el resultado o el error. ¡Esta es la única opción sensata! Además, aún sería más fácil ignorar un posible error al proporcionar una coincidencia de patrón parcial; algo como:

  Resultado (x): = f (1,2,3)

Esto también haría que ignorar los posibles errores sea más explícito y fácilmente susceptible de análisis de casos.

Además, la declaración de cambio de Go sería solo un caso especial de coincidencia de patrones. Para la verificación de errores, podría verse así:

 switch f (1,2,3) {case Result (x): doSomething (x) Case Error (err): handle (err)} 

¡Esto mejoraría la seguridad y la expresividad mientras mantiene la misma cantidad de características y casi la misma complejidad!

Compuesto y / o declaraciones.

  if (myVar == || {1,2,3})
 {
    // Hacer cosas
 }

Como alternativa a

  if (myVar == 1 || myVar == 2 || myVar == 3)
 {
    // Hacer cosas
 }


y

  if (&& {myVar1, myVar2, myVar3})
 {
    // Hacer cosas
 }

como alternativa a

  if (myVar1 && myVar2 && myVar3)
 {
    // Hacer cosas
 }

  if (&& {myVar1, || {myVar2, myVar3}})
 {
    // Hacer cosas
 }

como alternativa a

  if (myVar1 && (myVar2 || myVar3))
 {
    // Hacer cosas
 }

Descargo de responsabilidad: hice esta sintaxis en aproximadamente 2 minutos.

Descargo de responsabilidad 2: sé que hay más ef