将GET参数用作函数参数或在Golang Revel中使用c.Params.Get()

In the Golang Revel web framework, what's the difference between setting function arguments as parameters (for both GET and POST)

func (c Machine) TestConnection(addr string, port int, username, password string) revel.Result

versus retrieving HTTP parameters from within the function

addr := c.Params.Get("addr")
port, _ := strconv.Atoi(c.Params.Get("port"))
username := c.Params.Get("username")
password := c.Params.Get("password")

Also, if I use the function arguments method (the first method), can I still validate the HTTP parameters with c.Validation.Required("addr").Ok?

You can use whichever you prefer. However, defining them as method parameters lets the framework take care of parsing the string from the request to the type that you need. So it's offered as convenience.