Client code usually branches on a response status before reading the body.

Response Status

response_status.go
package main

import "fmt"

type responseMeta struct {
	StatusCode int
	Status     string
}

func main() {
	var statusCode = 
	text := "OK"
	if statusCode == 404 {
		text = "Not Found"
	}
	if statusCode == 503 {
		text = "Service Unavailable"
	}
	response := responseMeta{
		StatusCode: statusCode,
		Status:     fmt.Sprintf("%d %s", statusCode, text),
	}

	group := "other"
	if response.StatusCode >= 200 && response.StatusCode < 300 {
		group = "success"
	}
	if response.StatusCode >= 400 && response.StatusCode < 500 {
		group = "client error"
	}
	if response.StatusCode >= 500 {
		group = "server error"
	}

	fmt.Println("status=", response.Status)
	fmt.Println("code=", response.StatusCode)
	fmt.Println("group=", group)
}
package main

import "fmt"

type responseMeta struct {
	StatusCode int
	Status     string
}

func main() {
	var statusCode = 
	text := "OK"
	if statusCode == 404 {
		text = "Not Found"
	}
	if statusCode == 503 {
		text = "Service Unavailable"
	}
	response := responseMeta{
		StatusCode: statusCode,
		Status:     fmt.Sprintf("%d %s", statusCode, text),
	}

	group := "other"
	if response.StatusCode >= 200 && response.StatusCode < 300 {
		group = "success"
	}
	if response.StatusCode >= 400 && response.StatusCode < 500 {
		group = "client error"
	}
	if response.StatusCode >= 500 {
		group = "server error"
	}

	fmt.Println("status=", response.Status)
	fmt.Println("code=", response.StatusCode)
	fmt.Println("group=", group)
}
package main

import "fmt"

type responseMeta struct {
	StatusCode int
	Status     string
}

func main() {
	var statusCode = 
	text := "OK"
	if statusCode == 404 {
		text = "Not Found"
	}
	if statusCode == 503 {
		text = "Service Unavailable"
	}
	response := responseMeta{
		StatusCode: statusCode,
		Status:     fmt.Sprintf("%d %s", statusCode, text),
	}

	group := "other"
	if response.StatusCode >= 200 && response.StatusCode < 300 {
		group = "success"
	}
	if response.StatusCode >= 400 && response.StatusCode < 500 {
		group = "client error"
	}
	if response.StatusCode >= 500 {
		group = "server error"
	}

	fmt.Println("status=", response.Status)
	fmt.Println("code=", response.StatusCode)
	fmt.Println("group=", group)
}
status code HTTP status codes group results into success, client error, server error, and other categories.