diff --git a/docs/pointer.md b/docs/pointer.md new file mode 100644 index 0000000..dbf4de5 --- /dev/null +++ b/docs/pointer.md @@ -0,0 +1,136 @@ +# Pointer + +pointer contains some util functions to operate go pointer. + +
+ +## Source: + +- [https://github.com/duke-git/lancet/blob/main/pointer/pointer.go](https://github.com/duke-git/lancet/blob/main/pointer/pointer.go) + +
+ +## Usage: + +```go +import ( + "github.com/duke-git/lancet/v2/pointer" +) +``` + +
+ +## Index + +- [Of](#Of) +- [Unwrap](#Unwrap) +- [ExtractPointer](#ExtractPointer) + +
+ +## Documentation + +### Of + +

Returns a pointer to the pass value `v`.

+ +Signature: + +```go +func Of[T any](v T) *T +``` + +Example: + +```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 + +

Returns the value from the pointer.

+ +Signature: + +```go +func Unwrap[T any](p *T) T +``` + +Example: + +```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 + +

Returns the underlying value by the given interface type

+ +Signature: + +```go +func ExtractPointer(value any) any +``` + +Example: + +```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 +} +``` \ No newline at end of file diff --git a/docs/pointer_zh-CN.md b/docs/pointer_zh-CN.md new file mode 100644 index 0000000..5779759 --- /dev/null +++ b/docs/pointer_zh-CN.md @@ -0,0 +1,136 @@ +# Pointer + +pointer包支持一些指针类型的操作。 + +
+ +## 源码: + +- [https://github.com/duke-git/lancet/blob/main/pointer/pointer.go](https://github.com/duke-git/lancet/blob/main/pointer/pointer.go) + +
+ +## 用法: + +```go +import ( + "github.com/duke-git/lancet/v2/pointer" +) +``` + +
+ +## 目录 + +- [Of](#Of) +- [Unwrap](#Unwrap) +- [ExtractPointer](#ExtractPointer) + +
+ +## 文档 + +### 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 +} +``` \ No newline at end of file