How to create multiline strings in Golang
I had the next problem:
How to create a multiline string in go to print a line like this:
curl -u elastic:changeme -XPUT http://localhost:9200/my_index/users/1?pretty -d '{
"firstname" : "Rodolfo",
"lastname" : "Guzmán Huerta",
"alias" : "El Santo"
}'
The first solution was use fmt.Println function like this:
fmt.Println("curl -u elastic:changeme -XPUT http://localhost:9200/my_index/users/1?pretty -d '{")
fmt.Println(" \"firstname\" : \"Rodolfo\",")
fmt.Println(" \"lastname\" : \"Guzmán Huerta\",")
fmt.Println(" \"alias\" : \"El Santo\"")
fmt.Println("}'")
and it works, but i don’t like it :(
The second solution was use `` to create a raw string and only one fmt.Println function like this:
curl1 :=
`
curl -u elastic:changeme -XPUT http://localhost:9200/my_index/users/1?pretty -d '{
"firstname" : "Rodolfo",
"lastname" : "Guzmán Huerta",
"alias" : "El Santo"
}'
`
fmt.Println(curl1)
It looks much better!
But now, i need to insert variables inside the multiline string, one possible solution is to use fmt.Printf function like this:
fmt.Println("The second solution:\n")
fmt.Printf("curl -u elastic:changeme -XPUT http://localhost:9200/my_index/users/%v?pretty -d '{", id)
fmt.Printf(" \"firstname\" : \"%v\",", firstname)
fmt.Printf(" \"lastname\" : \"%v\",", lastname)
fmt.Printf(" \"alias\" : \"%v\"", alias)
fmt.Printf("}'")
And also works!
But finally i found the best solution like this:
id := 2
firstname := "Daniel"
lastname := "García Arteaga"
alias := "Huracán Ramírez"
curl2 :=
`
curl -u elastic:changeme -XPUT http://localhost:9200/my_index/users/` + strconv.Itoa(id) + `?pretty -d '{
"firstname" : "` + firstname + `",
"lastname" : "` + lastname + `",
"alias" : "` + alias + `"
}'
`
fmt.Println(curl2)
Here i only use the Itoa function of the package strconv to convert an int value to string
Works and looks much better
I think it's the best solution, what do you think?
yep, last one the cleanest :)
And easier to understand :)