網頁

2024/2/29

Golang clear函式

Go 1.21內建clear函式用法。


clear函式只接收slice或map參數,效果分別如下。


Clear slice

當輸入為slice時,clear函式會將其中的元素轉為zero value,因此長度不變。

main.go

package main

import "fmt"

type Employee struct {
    Id   int
    Name string
}

func main() {
    ints := []int{1, 2, 3}
    clear(ints)
    fmt.Println(ints)      // [0 0 0]
    fmt.Println(len(ints)) // 3

    emps := []Employee{
        {1, "john"},
        {2, "mary"},
    }
    clear(emps)
    fmt.Println(emps) // [{0 } {0 }]
}

執行印出以下:

[0 0 0]
3
[{0 } {0 }]


Clear map

當輸入為map時,clear函式會將其中的元素清空,所以長度為0。

main.go

package main

import "fmt"

type Employee struct {
    Id   int
    Name string
}

func main() {
    intMap := map[int]string{
        1: "a",
        2: "b",
        3: "c",
    }
    clear(intMap)
    fmt.Println(intMap)      // map[]
    fmt.Println(len(intMap)) // 0

    empMap := map[int]Employee{
        1: {1, "john"},
        2: {2, "mary"},
    }
    clear(empMap)
    fmt.Println(empMap) // map[]
}

執行印出以下:

map[]
0
map[]


沒有留言:

張貼留言