Я рассматриваю написание шаблона Пойти генератор кода и удивление:Go Язык: дублирующиеся константы сборник
Если у меня есть много строковых констант и/или переменных с одинаковыми значениями они будут храниться в исполняемом файле несколько раз или компилятор сделает оптимизацию и сохранит только один экземпляр за один дубликат и направит его туда, где это необходимо?
E.g.
File1.go
========
s1 := "some_string_1"
s2 := "some_string_2"
FileN.go
========
a1 := "some_string_1"
a1 := "some_string_2"
Будет ли это влиять на размер файла, если у меня есть несколько файлов с одинаковыми константами или компилятором, достаточно умный, чтобы сделать оптимизацию?
Представьте себе, что во многих шаблонах меня Somthing как:
Template 1
==========
{% for a in list1 %}<td>{{a}}</td>{% endfor %}
Tempalte 2
==========
{% for b in list2 %}<td>{{b.c}}</td><td>{{b.d}}</td>{% endfor %}
, которые будут переведены на что-то вроде:
for i, a := range list {
write("<td>")
write(a)
write("</td>")
}
for i, b := range list2 {
write("<td>")
write(b.c)
write("</td></td>")
write(b.d)
write("</td>")
}
Очевидно, что <td>
& </td>
будет повторяться много раз в коде. Так будет ли смысл создавать глобальный массив строк и принимать значения из него? Что-то вроде:
myStrings := [...]string{
"<td>",
"</td>"
}
for i, a := range list {
write(myStrings[0])
write(a)
write(myStrings[1])
}