Verweis auf string-Literale in Gehen

In meiner Anwendung, die ich Häufig passieren verweist auf einen statischen string. Ich möchte vermeiden, dass Sie Gehen, reservieren Sie Speicher für jeden Anruf, aber ich konnte, um die Adresse zu meinem string-literal.

Warum ist es nicht möglich, die Adresse einer string-literal (siehe test1() im Beispiel unten)? Habe ich falsch verstanden, die syntax, oder ist es eine Beschränkung auf Grund der internen Funktionsweise Gehen?

Falls dies nicht möglich ist, was wäre die beste Lösung?

test2() funktioniert, aber es wird Speicher für die var hej jedes mal?

test3() nicht zugeordnet werden keine neuen Speicher, aber ich wünschte, um Unordnung zu vermeiden, die außerhalb der Funktion.

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())
}

Danke für die Hilfe!

InformationsquelleAutor ANisus | 2012-06-18
Schreibe einen Kommentar