Clone#

Generates a Clone() method. For plain value fields it’s a simple struct copy; for slice fields, gcraft generates an explicit deep copy so the clone doesn’t share the same backing array as the original. Enabled by default; disable with -clone=false.

gcraft generate -type User -src ./user.go

Generates:

func (v User) Clone() User {
	c := v
	return c
}
copy := user.Clone()
copy.Name = "Changed"
// original `user` is untouched