Довольно частая задача — получить от пользователя некое значение в виде строки и распарсить его несколько составных частей других типов. Например, нужно получить отдельно хост и порт некоего эндпоинта:
package main
import (
"fmt"
"strings"
)
func main() {
s := strings.Split("myhost.com:5432", ":")
ip, port := s[0], s[1]
fmt.Println(ip, port)
}
Конкретно для этой задачи можно воспользоваться специализированным решением:
package main
import (
"fmt"
"net"
)
func main() {
host, port, err := net.SplitHostPort("myhost.com:5432")
fmt.Println(host, port, err)
}