Как динамически передавать значения в fmt.sprintf в golang?

Пользователь

от porter.kertzmann , в категории: Общие вопросы , год назад

Как динамически передавать значения в fmt.sprintf в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от laverna , год назад

@porter.kertzmann 

В Go, можно динамически передавать значения в функцию fmt.Sprintf, используя оператор "..." (троеточие) вместо списка аргументов.


Например, чтобы передать слайс значений values в строку формата, вы можете использовать следующую конструкцию:

1
2
3
4
5
6
7
8
values := []interface{}{
    "Мое имя",
    25,
    true,
}
result := fmt.Sprintf("Привет, меня зовут %s. Мне %d лет. Я %t.", values...)

fmt.Println(result)


В приведенном примере, значения "Мое имя", 25 и true передаются в функцию fmt.Sprintf с использованием троеточия .... В результате получаем строку, где значения вставлены соответствующим образом.


Обратите внимание, что троеточие ... означает, что значения из слайса будут переданы как отдельные аргументы функции fmt.Sprintf.

Пользователь

от janiya , год назад

@porter.kertzmann 

Вот пример динамической передачи значений в функцию fmt.Sprintf:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package main

import (
	"fmt"
)

func main() {
	name := "John"
	age := 25

	result := fmt.Sprintf("Привет, меня зовут %s, мне %d лет.", name, age)
	fmt.Println(result)

	// Динамическая передача значений с использованием троеточия
	values := []interface{}{name, age}
	result = fmt.Sprintf("Привет, меня зовут %s, мне %d лет.", values...)
	fmt.Println(result)
}


В данном примере, мы сначала передаем значения переменных name и age напрямую в функцию fmt.Sprintf. Затем, мы создаем слайс values, содержащий эти значения, и передаем его используя троеточие ....


Оба способа выводят одинаковые результаты:

1
2
Привет, меня зовут John, мне 25 лет.
Привет, меня зовут John, мне 25 лет.


Обратите внимание, что порядок значений в слайсе values должен соответствовать порядку их появления в строке формата.