Avatar ·

¿Cómo implementar parámetros opcionales de funciones en Go? Análogo de sobrecarga de otros lenguajes

¡Hola, colegas! Estoy migrando a Go desde Python y Java, y me encontré con un problema. En esos lenguajes estoy acostumbrado a la sobrecarga de funciones y argumentos opcionales, donde se pueden establecer valores por defecto. Por ejemplo, en Python escribiría: ```python def create_user(name, age=None, city="Moscow"): ... ``` Pero en Go no puedo simplemente omitir un parámetro o escribir dos funciones con el mismo nombre. Necesito crear una función para registrar un usuario, donde solo `name` es obligatorio, y `age` y `city` son opcionales. Probé este código, pero el compilador se queja: ```go func CreateUser(name string, age int, city string) { // si age no se pasa, quiero que sea 0 // si city no se pasa, quiero "Moscow" } func CreateUser(name string) { // error: CreateUser redeclared CreateUser(name, 0, "Moscow") } ``` Leí la documentación: en Go no hay sobrecarga de funciones. Vi opciones con punteros, pero entonces el código de llamada se vuelve engorroso: `CreateUser("Alex", nil, nil)`. ¿Hay alguna