package main import ( "log" "net/http" "strings" "encoding/json" ) type jsonOutput struct { Ip string `json:"ip"` } func ipJsonOutput (w http.ResponseWriter, r *http.Request) { var ip jsonOutput ip.Ip = remoteAddr(r) output, err := json.Marshal(ip) if err != nil { w.Write([]byte(err.Error())) } w.Write([]byte(output)) } func ipOutput (w http.ResponseWriter, r *http.Request) { ip := remoteAddr(r) w.Write([]byte(ip)) } func remoteAddr ( r *http.Request) string { var ip string if r.RemoteAddr[0] == '[' { ip = strings.Split(r.RemoteAddr,"]")[0][1:] } else { ip = strings.Split(r.RemoteAddr,":")[0] } return ip } func main() { http.HandleFunc("/",ipOutput) http.HandleFunc("/json",ipJsonOutput) log.Fatal(http.ListenAndServe(":8080", nil)) }