1) Разница лишь в том, что при вызове
http.ListenAndServe
нужно было бы передавать вторым аргументом созданный
ServeMux
. Если вы пользуетесь только стандартным пакетом
net/http
, то проще использовать дефолтный ServeMux, в то же время создание кастомного Mux'а позволяет использовать такие пакеты, как
github.com/gorilla/mux
2) Хороший ответ на SO:
https://stackoverflow.com/a/13256311/7752659. Если коротко, то
http.ResponesWriter
– это
interface
, а
interface
, грубо говоря, уже является указателем.
http.Request
является указателем для того, чтобы при его изменении сервер мог "видеть" эти изменения