2 回答

TA贡献1906条经验 获得超10个赞
如果您有一个 struct 类型的变量,您可以通过为其类型分配零值来将其归零。
正如其他人所指出的,由于您有一个匿名类型的变量,因此复合文字必须重复结构定义:
// Reset with struct literal:
dog = struct {
Name string
Age int
Breed string
}{}
这很不方便。所以只需使用命名类型。
你也可以通过反射来做到这一点:
// Reset using reflection:
p := &dog
v := reflect.ValueOf(p).Elem()
v.Set(reflect.New(v.Type()).Elem())
这里的优点是我们不必重复结构定义,并且该解决方案适用于所有结构(以及其他类型)。但是使用反射比较慢。同样,只需使用命名类型。

TA贡献1906条经验 获得超3个赞
您提出的解决方案有什么问题?这就是你将如何做到的:
package main
import (
"fmt"
)
type Dog struct {
Name string
Age int
Breed string
}
var dog = Dog{}
func main() {
dog.Name = "Pongo"
dog.Age = 7
dog.Breed = "Dalmatian"
fmt.Println(dog)
// Reset struct.
dog = Dog{}
fmt.Println(dog)
dog.Name = "Fluffy"
dog.Breed = "Poodle"
fmt.Println(dog)
}
- 2 回答
- 0 关注
- 128 浏览
添加回答
举报