如何在Golang中将“字符串指针”转换为字符串?

88

如何从指向字符串的指针获取字符串值?

我正在使用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]()

返回值

./prog.go:17:14: cannot use strPointer (type *string) 
as type string in map index
3个回答

150

解引用指针:

strPointerValue := *strPointer

12
正确,但是如果指针字符串为nil,将会发生运行时错误。 - Matteo
2
那么,有什么更好的解决方案呢? - ram4nd
2
如果strPointer不是nil { strPointerValue := *strPointer } - Archie Yalakki

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

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

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

    return ""
}


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接