将字符串指向字符串

Jar*_*ing 37 pointers go

是否可以从指向字符串的指针获取字符串值?

我正在使用goopt包来处理标志解析,而包只返回*string.但我想使用这些值来调用地图中的函数.

举个例子.

var strPointer = new(string)
*strPointer = "string"

functions := map[string]func() {
    "string": func(){
        fmt.Println("works")
    },
}  

//Do something to get the string value

functions[strPointerValue]()
Run Code Online (Sandbox Code Playgroud)

你可以看到这里展示的问题http://play.golang.org/p/1s0-d-GO-L

One*_*One 77

取消引用指针:

strPointerValue := *strPointer
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的,但是如果指针字符串为“nil”,则会出现运行时错误 (5认同)
  • 那么更好的解决方案是什么? (2认同)
  • @ram4nd if strPointer != nil { strPointerValue := *strPointer } (2认同)

Oza*_*zan 13

首先检查字符串指针是否为 nil 的简单函数可以防止运行时错误:

func DerefString(s *string) string {
    if s != nil {
        return *s
    }

    return ""
}

Run Code Online (Sandbox Code Playgroud)