英文:
How to convert a 'string pointer' to a string in Golang?
问题
从字符串指针获取字符串值是可能的。
我正在使用goopt包来处理标志解析,该包只返回*string类型。我想使用这些值来调用映射中的函数。
示例:
var strPointer = new(string)
*strPointer = "string"
functions := map[string]func() {
"string": func(){
fmt.Println("works")
},
}
// 做一些操作以获取字符串值
functions[strPointerValue]()
返回:
./prog.go:17:14: 无法将strPointer(类型为*string)作为映射索引中的string类型使用
英文:
Is it possible to get the string value from a pointer to a string?
I am using the goopt package to handle flag parsing and the package returns *string only. I want to use these values to call a function in a map.
var strPointer = new(string)
*strPointer = "string"
functions := map[string]func() {
"string": func(){
fmt.Println("works")
},
}
//Do something to get the string value
functions[strPointerValue]()
returns
./prog.go:17:14: cannot use strPointer (type *string)
as type string in map index
答案1
得分: 148
解引用指针:
strPointerValue := *strPointer
英文:
Dereference the pointer:
strPointerValue := *strPointer
答案2
得分: 25
一个简单的函数,首先检查字符串指针是否为nil,可以防止运行时错误:
func DerefString(s *string) string {
if s != nil {
return *s
}
return ""
}
英文:
A simple function that first checks if the string pointer is nil would prevent runtime errors:
func DerefString(s *string) string {
if s != nil {
return *s
}
return ""
}
答案3
得分: 3
通用的翻译如下:
func SafeDeref[T any](p *T) T {
if p == nil {
var v T
return v
}
return *p
}
这段代码是一个通用的函数,名为SafeDeref
。它接受一个指向类型T
的指针p
作为参数,并返回类型T
的值。
函数的作用是安全地解引用指针p
。首先,它检查指针p
是否为nil
,如果是,则创建一个类型T
的零值v
并返回。如果指针p
不为nil
,则返回指针p
所指向的值*p
。
这个函数的目的是避免在解引用指针之前进行空指针检查,以简化代码并提高安全性。
英文:
Generic https://stackoverflow.com/a/62790458/1079543 :
func SafeDeref[T any](p *T) T {
if p == nil {
var v T
return v
}
return *p
}
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论