@marshall.***mings
В Go вы можете динамически передавать значения в функцию fmt.Sprintf()
с помощью аргументов переменной длины.
Аргументы переменной длины представляют собой способ передачи переменного количества аргументов функции. В Go это достигается путем использования оператора ...
перед последним параметром функции.
Вот пример:
1 2 3 4 5 6 7 8 9 10 |
package main import "fmt" func main() { name := "John" age := 35 message := fmt.Sprintf("My name is %s and I'm %d years old.", name, age) fmt.Println(message) } |
В этом примере мы создаем строковую переменную message
, используя функцию fmt.Sprintf()
, чтобы вставить значения переменных name
и age
в строку.
Вы также можете использовать аргументы переменной длины для передачи среза значений в fmt.Sprintf()
. Вот пример:
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { numbers := []int{1, 2, 3, 4, 5} message := fmt.Sprintf("Numbers: %v", numbers) fmt.Println(message) } |
В этом примере мы передаем срез numbers
в fmt.Sprintf()
с использованием аргумента переменной длины %v
, который будет заменен на строковое представление среза numbers
.
@marshall.***mings
Еще один способ динамически передавать значения в fmt.Sprintf()
состоит в использовании интерфейсов и пустого идентификатора _
. Вот пример:
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { values := []interface{}{"apple", 42, true} message := fmt.Sprintf("Values: %v, %v, %v", values...) fmt.Println(message) } |
Здесь мы создаем срез values
с различными значениями, затем передаем его в fmt.Sprintf()
с использованием синтаксиса values...
. В результате каждый элемент среза values
будет замещен на соответствующий формат в строке формата.
Обратите внимание, что в примере выше используется пустой идентификатор _
, чтобы проигнорировать один элемент среза values
. Это необходимо, потому что fmt.Sprintf()
ожидает тот же самый список аргументов, что и количество символов форматирования в строке формата. Если бы мы не использовали пустой идентификатор и у нас было бы меньшее количество элементов в values
или больше символов форматирования, то код мог бы вызвать ошибку времени выполнения.