我希望建模一个可以有两种可能形式的值:缺席或字符串。
执行此操作的自然方法是使用Maybe String
, or Optional
, orstring option
等。但是,Go
没有这样的变体类型。
然后我想,在 Java、C 等之后,替代方案将是可空性,或者nil
在 Go 中。但是,在 Gonil
中不是类型的成员。string
搜索,然后我想使用 type *string
。这可以工作,但看起来很尴尬(例如,我不能以与获取结构文字地址相同的方式获取字符串文字的地址)。
在 Go 中为这样的值建模的惯用方法是什么?
您可以使用类似的东西sql.NullString
,但我个人会坚持使用*string
.
至于尴尬,确实不能只是sp := &"foo"
不幸。但是有一个解决方法:
func strPtr(s string) *string {
return &s
}
调用strPtr("foo")
应该是内联的,所以它是有效的&"foo"
.
另一种可能性是使用new
:
sp := new(string)
*sp = "foo"
在Go语言中,对指向数组的指针进行取值操作可以通过以下几种方式实现。假设我们有一个指向数组的指针,我们可以使用数组指针来访问数组的元素,或者通过解引用操作符来获取整个数组。下面是一个详细的示例和解释:package main import "fmt" func main() { // 声明并初始化一个数组 arr := [3]int{1, 2, 3} // 获取数组的指针 arrPtr := &arr // 方法1:通过数组指针直接访问数组元素 fm
golang框架在高并发场景下的性能调优策略?
进程结束时,信号量是如何自动释放的?
Flutter在Debian上运行体验如何
如何对涉及数据库交互的 Golang 函数进行单元测试?
Debian用Flutter实现跨平台开发指南