A função Sprintf possui suporte ao uso de índice em conjunto com os identificadores de formatação de forma a nos
permitir associar as valores passados como argumento para a função com índices que se iniciam a partir de 1.
Sintaxe: indexador
%[indice]formatador
Sintaxe: Sprintf
func Sprintf(format string, a ...any) string
Onde
a: lista de valores para formatação.
format: string contendo identificador de formatação
A diferença entres as funções Printf e Sprintf é que a segunda função retorna um string formatada,
a primeira função exibe uma string formatada na saída padrão.
Exemplo 2
package main
import "fmt"
type mstruct struct {
id int
dsc string
}
func main() {
var valor int = 64
var str = "string"
var vbl = false
var pint *int = &valor
var ret string = fmt.Sprintf("%[2]s %[4]p %[1]d %[3]t\n", valor, str, vbl, pint)
fmt.Println(ret)
}
Saída
string 0xc000012028 64 false
Como pode ser observado no exemplo acima, a ordem dos argumentos não precisa estar na mesma ordem que índices
são declarados na string formatada.