在Golang中,常见的清空操作有以下几种:

1. 清空字符串

可以通过将字符串变量赋值为空字符串来清空:

var s string = "example"
s = ""

2. 清空slice

可以使用`slice[:0]`语法让slice的长度变为0,从而清空slice:

var slice []int = []int{1, 2, 3}
slice = slice[:0]

或者也可以使用`make()`函数,重新分配一个空的slice:

slice = make([]int, 0)

3. 清空map

可以使用`for k := range m { delete(m, k) }`循环删除map中的所有键值对来清空map:

var m map[string]int = map[string]int{"foo": 1, "bar": 2}
for k := range m {
    delete(m, k)
}

或者也可以使用`make()`函数,重新分配一个空的map:

m = make(map[string]int)

4. 清空数组

可以通过循环将数组中所有元素赋值为默认值来清空数组:

var arr [3]int = [3]int{1, 2, 3}
for i := range arr {
    arr[i] = 0
}

或者也可以使用`array = [3]int{} `语法,重新分配一个空数组:

arr = [3]int{}

5. 清空结构体

可以通过将结构体变量中所有的字段都赋值为对应类型的默认值来清空结构体:

type Example struct {
    Foo string
    Bar int
}

var e Example = Example{"hello", 42}
e = Example{}

完整示例代码如下:

package main

import "fmt"

func main() {
    var s string = "example"
    s = ""
    fmt.Println("s after clear:", s)

    var slice []int = []int{1, 2, 3}
    slice = slice[:0]
    fmt.Println("slice after clear:", slice)

    var m map[string]int = map[string]int{"foo": 1, "bar": 2}
    for k := range m {
        delete(m, k)
    }
    fmt.Println("m after clear:", m)

    var arr [3]int = [3]int{1, 2, 3}
    for i := range arr {
        arr[i] = 0
    }
    fmt.Println("arr after clear:", arr)

    type Example struct {
        Foo string
        Bar int
    }
    var e Example = Example{"hello", 42}
    e = Example{}
    fmt.Println("e after clear:", e)
}