1type Reader interface {2 Read([]byte) (int, error)3}45func readHeader(reader Reader) ([]byte, error) {6 header := make([]byte, 8)7 _, err := io.ReadFull(reader, header)8 return header, err9}
1type User struct {2 ID int3 Email string4}56func NewUser(id int, email string) (User, error) {7 if id <= 0 || !strings.Contains(email, "@") {8 return User{}, errors.New("invalid user")9 }10 return User{ID: id, Email: email}, nil11}
1func TestIsEven(t *testing.T) {2 tests := []struct {3 input int4 want bool5 }{{2, true}, {3, false}}67 for _, test := range tests {8 if got := IsEven(test.input); got != test.want {9 t.Errorf("IsEven(%d) = %v, want %v", test.input, got, test.want)10 }11 }12}