mirror of
				https://github.com/samber/lo.git
				synced 2025-10-31 19:43:08 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			490 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			490 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package lo
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| )
 | |
| 
 | |
| func ExampleTernary() {
 | |
| 	result := Ternary(true, "a", "b")
 | |
| 
 | |
| 	fmt.Printf("%v", result)
 | |
| 	// Output: a
 | |
| }
 | |
| 
 | |
| func ExampleTernaryF() {
 | |
| 	result := TernaryF(true, func() string { return "a" }, func() string { return "b" })
 | |
| 
 | |
| 	fmt.Printf("%v", result)
 | |
| 	// Output: a
 | |
| }
 | |
| 
 | |
| func ExampleIf() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func ExampleIfF() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_ifElse_ElseIf() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_ifElse_ElseIfF() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_ifElse_Else() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_ifElse_ElseF() {
 | |
| 	result1 := If(true, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result2 := If(false, 1).
 | |
| 		ElseIf(true, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result3 := If(false, 1).
 | |
| 		ElseIf(false, 2).
 | |
| 		Else(3)
 | |
| 
 | |
| 	result4 := IfF(true, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result5 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(true, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	result6 := IfF(false, func() int { return 1 }).
 | |
| 		ElseIfF(false, func() int { return 2 }).
 | |
| 		ElseF(func() int { return 3 })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func ExampleSwitch() {
 | |
| 	result1 := Switch[int, string](1).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result2 := Switch[int, string](2).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result3 := Switch[int, string](42).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result4 := Switch[int, string](1).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result5 := Switch[int, string](2).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result6 := Switch[int, string](42).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_switchCase_Case() {
 | |
| 	result1 := Switch[int, string](1).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result2 := Switch[int, string](2).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result3 := Switch[int, string](42).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result4 := Switch[int, string](1).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result5 := Switch[int, string](2).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result6 := Switch[int, string](42).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_switchCase_CaseF() {
 | |
| 	result1 := Switch[int, string](1).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result2 := Switch[int, string](2).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result3 := Switch[int, string](42).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result4 := Switch[int, string](1).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result5 := Switch[int, string](2).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result6 := Switch[int, string](42).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_switchCase_Default() {
 | |
| 	result1 := Switch[int, string](1).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result2 := Switch[int, string](2).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result3 := Switch[int, string](42).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result4 := Switch[int, string](1).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result5 := Switch[int, string](2).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result6 := Switch[int, string](42).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | |
| 
 | |
| func Example_switchCase_DefaultF() {
 | |
| 	result1 := Switch[int, string](1).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result2 := Switch[int, string](2).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result3 := Switch[int, string](42).
 | |
| 		Case(1, "1").
 | |
| 		Case(2, "2").
 | |
| 		Default("3")
 | |
| 
 | |
| 	result4 := Switch[int, string](1).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result5 := Switch[int, string](2).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	result6 := Switch[int, string](42).
 | |
| 		CaseF(1, func() string { return "1" }).
 | |
| 		CaseF(2, func() string { return "2" }).
 | |
| 		DefaultF(func() string { return "3" })
 | |
| 
 | |
| 	fmt.Printf("%v\n", result1)
 | |
| 	fmt.Printf("%v\n", result2)
 | |
| 	fmt.Printf("%v\n", result3)
 | |
| 	fmt.Printf("%v\n", result4)
 | |
| 	fmt.Printf("%v\n", result5)
 | |
| 	fmt.Printf("%v\n", result6)
 | |
| 	// Output:
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| 	// 1
 | |
| 	// 2
 | |
| 	// 3
 | |
| }
 | 
