punteros de golang en punteros como parámetros de función

Tengo la siguiente función:

func addCatsToMap(m map[string][]CatHouse, meowId int, treats Set, dog *Dog) {

//if (complicated thing) add Cat to m

}

dóndeSet, el tipo detreats, es una interfaz con la siguiente definición:

type Set interface {
  Add(value string)
  Contains(value string) (bool)
  Length() (int)
  RemoveDuplicates()
}

Pregunta:

Es verdad quem, treatsydog sonpasado por referenciaymeowId ha copiado su valor?

Yo asumo eso:

m es paso por referencia porque es un mapadog es una estructura Por lo tanto, debo pasar el puntero para evitar copiar los datos

Respuestas a la pregunta(3)

Su respuesta a la pregunta