Nella mia applicazione passerò frequentemente i riferimenti a una stringa statica. Vorrei evitare di dover allocare memoria per ogni chiamata, ma non sono riuscito a ottenere l'indirizzo nella mia stringa letterale.Riferimento a stringhe letterali in Go
Perché non è possibile prendere l'indirizzo di una stringa letterale (vedere test1()
nell'esempio seguente)? Ho frainteso la sintassi, o è una limitazione dovuta al funzionamento interno di Go?
Se non fosse possibile, quale sarebbe la soluzione migliore?
test2()
funziona, ma allocherà la memoria per lo var hej
ogni volta?
test3()
non assegnerà alcuna nuova memoria, ma desidero evitare il disordine all'esterno della funzione.
package main
import "fmt"
var konnichiwa = `こんにちは世界`
// Gives the compile error `cannot take the address of "Hello world"`
func test1() (*string) { return &`Hello world` }
// Works fine
func test2() (*string) {
hej := `Hej världen`
return &hej
}
func test3() (*string) { return &konnichiwa }
func main(){
fmt.Println(*test1())
fmt.Println(*test2())
fmt.Println(*test3())
}
Grazie per l'aiuto!
Posso capire il punto di ambiguità. Grazie per aver spiegato! – ANisus