Trong ứng dụng của tôi, tôi thường xuyên chuyển các tham chiếu đến một chuỗi tĩnh. Tôi muốn tránh việc cấp phát bộ nhớ cho mỗi cuộc gọi, nhưng tôi đã không nhận được địa chỉ cho chuỗi ký tự của tôi.Tham chiếu đến các chuỗi ký tự trong Go
Tại sao không thể lấy địa chỉ của chuỗi ký tự (xem test1()
trong ví dụ bên dưới)? Tôi đã hiểu sai cú pháp, hay nó là một hạn chế do các hoạt động bên trong của Go?
Nếu không thể, giải pháp nào là tốt nhất?
test2()
hoạt động, nhưng nó sẽ phân bổ bộ nhớ cho var hej
mỗi lần?
test3()
sẽ không cấp phát bộ nhớ mới, nhưng tôi muốn tránh lộn xộn bên ngoài chức năng.
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())
}
Cảm ơn bạn đã trợ giúp!
Tôi có thể hiểu được điểm mơ hồ. Cảm ơn vì đã giải thích! – ANisus