How to create multiline strings in Golang

in programming •  7 years ago  (edited)

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?

Here leave the code

The Go Playground

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

yep, last one the cleanest :)

And easier to understand :)