相关疑难解决方法(0)

在Go中引用字符串文字

在我的应用程序中,我将经常传递对静态字符串的引用.我希望避免Go为每次调用分配内存,但是我没有将地址输入到我的字符串文字中.

为什么不能获取字符串文字的地址(参见test1()下面的例子)?我是否误解了语法,或者由于Go的内部工作原因这是一个限制?

如果不可能,最好的解决方案是什么?

test2()有效,但var hej每次都会分配内存吗?
test3()不会分配任何新的内存,但我希望避免功能之外的混乱.

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())
}
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

string pointers go string-literals

16
推荐指数
4
解决办法
7419
查看次数

初始化struct中的字符串指针

Go Newbie问题:我正在尝试使用默认值初始化以下结构.我知道如果"Uri"是一个字符串而不是指向字符串的指针(*string),它会起作用.但我需要这个指针来比较结构的两个实例,如果没有设置Uri将是nil,例如当我从json文件解组内容时.但是,如何将这样的结构正确地初始化为"静态默认"?

type Config struct {
  Uri       *string
}

func init() {
  var config = Config{ Uri: "my:default" }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码失败了

cannot use "string" (type string) as type *string in field value
Run Code Online (Sandbox Code Playgroud)

struct pointers go

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

go ×2

pointers ×2

string ×1

string-literals ×1

struct ×1