Why method with "value receiver" work with "pointer caller"?

I'm new in Go. I'm reading about method receiver.

And have a little confuse why value receiver accept pointer type, and in the example below, the name wasn't changed even with pointer type.

I've got this result:

Employee name: Mark Andrew
Employee name: Mark Andrew
Employee name: Mark Andrew

package main

import (
	"fmt"
)

type Employee struct {
	name string
	age  int
}

/*
Method with value receiver
*/
func (e Employee) changeName(newName string) {
	e.name = newName
}

/*
Method with pointer receiver
*/
func (e *Employee) changeAge(newAge int) {
	e.age = newAge
}

func main() {
	e := Employee{
		name: "Mark Andrew",
		age:  50,
	}
	
	// this work perfectly
	fmt.Printf("Employee name: %s", e.name)
	e.changeName("Michael Andrew")
	
	// ofcourse, the name isn't changed => good
	fmt.Printf("\nEmployee name: %s", e.name)
	
	// but why this work too?
	// and why the name wasn't changed? => confused ...
	(&e).changeName("Hallo")
	fmt.Printf("\nEmployee name: %s", e.name)
}