Как подставить значение в строку на golang?

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

от vladimir , в категории: Golang , 2 года назад

Как подставить значение в строку на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от richard , 2 года назад

@vladimir 

В Go есть несколько способов подставить значение в строку.

  1. Использование оператора % и функции fmt.Sprintf():
1
2
3
4
name := "Alice"
age := 30
message := fmt.Sprintf("Меня зовут %s, и мне %d лет.", name, age)
fmt.Println(message)


  1. Использование функции strings.Replace():
1
2
3
4
message := "Hello, [name]! You have [count] new messages."
message = strings.Replace(message, "[name]", "Alice", 1)
message = strings.Replace(message, "[count]", "3", 1)
fmt.Println(message)


  1. Использование библиотеки text/template:
1
2
3
4
5
6
7
8
9
type Person struct {
    Name string
    Age  int
}

t := template.New("greeting")
t, _ = t.Parse("Меня зовут {{.Name}}, и мне {{.Age}} лет.")
person := Person{Name: "Alice", Age: 30}
t.Execute(os.Stdout, person)


Все эти методы могут быть полезны в различных ситуациях в зависимости от ваших потребностей.

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

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

@vladimir 

Также можно использовать интерполяцию строк (string interpolation), которая была введена в Go версии 1.13:


1 2 3


name := "Alice" age := 30 message := fmt.Sprintf("Меня зовут %s, и мне %d лет.", name, age) fmt.Println(message)


Вместо использования оператора % и функции Sprintf, вы можете просто использовать символы % и {} для подстановки значений в строку:


1 2 3


name := "Alice" age := 30 message := "Меня зовут " + name + ", и мне " + strconv.Itoa(age) + " лет." fmt.Println(message)


Обратите внимание, что для преобразования числа в строку при помощи strconv.Itoa() в данном случае использовалась функция strconv.Itoa(), так как использование символа + требует, чтобы оба операнда имели тип string.