Pointer
pointer 包支持一些指针类型的操作。
源码:
用法:
go
import (
"github.com/duke-git/lancet/v2/pointer"
)
目录
文档
Of
返回传入参数的指针值。
函数签名:
go
func Of[T any](v T) *T
示例:运行
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/pointer"
)
func main() {
result1 := pointer.Of(123)
result2 := pointer.Of("abc")
fmt.Println(*result1)
fmt.Println(*result2)
// Output:
// 123
// abc
}
Unwrap
返回传入指针指向的值。
函数签名:
go
func Unwrap[T any](p *T) T
示例:运行
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/pointer"
)
func main() {
a := 123
b := "abc"
result1 := pointer.Unwrap(&a)
result2 := pointer.Unwrap(&b)
fmt.Println(result1)
fmt.Println(result2)
// Output:
// 123
// abc
}
ExtractPointer
返回传入interface的底层值。
函数签名:
go
func ExtractPointer(value any) any
示例:运行
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/pointer"
)
func main() {
a := 1
b := &a
c := &b
d := &c
result := pointer.ExtractPointer(d)
fmt.Println(result)
// Output:
// 1
}
UnwrapOr
返回指针的值,如果指针为零值,则返回fallback。
函数签名:
go
UnwrapOr[T any](p *T, fallback T) T
示例:运行
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/pointer"
)
func main() {
a := 123
b := "abc"
var c *int
var d *string
result1 := pointer.UnwrapOr(&a, 456)
result2 := pointer.UnwrapOr(&b, "abc")
result3 := pointer.UnwrapOr(c, 456)
result4 := pointer.UnwrapOr(d, "def")
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// 123
// abc
// 456
// def
}
UnwrapOrDefault
返回指针的值,如果指针为零值,则返回相应零值。
函数签名:
go
UnwrapOrDefault[T any](p *T) T
示例:运行
go
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/pointer"
)
func main() {
a := 123
b := "abc"
var c *int
var d *string
result1 := pointer.UnwrapOrDefault(&a)
result2 := pointer.UnwrapOrDefault(&b)
result3 := pointer.UnwrapOrDefault(c)
result4 := pointer.UnwrapOrDefault(d)
fmt.Println(result1)
fmt.Println(result2)
fmt.Println(result3)
fmt.Println(result4)
// Output:
// 123
// abc
// 0
//
}