Size: a a a

2020 April 16

IK

Ivan Kozlov in Go-go!
Подскажите, на сколько эффективный код. Нужно получать число-поддомен. Большая нагрузка!
http://1.domain.com
http://2.domain.com
http://3.domain.com
...

func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := string(ctx.Host())
   idx := strings.Index(host, ".")
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
источник

C

Calculon in Go-go!
Ivan Kozlov
Подскажите, на сколько эффективный код. Нужно получать число-поддомен. Большая нагрузка!
http://1.domain.com
http://2.domain.com
http://3.domain.com
...

func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := string(ctx.Host())
   idx := strings.Index(host, ".")
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
ууу bytes to string аллокации мы такое не любим
источник

C

Calculon in Go-go!
аж целых два раза
источник

а

а кто это in Go-go!
чо
источник

ВС

Владимир Столяров... in Go-go!
Конвертация слайса байт в строки вызывает аллокацию. Есть функции для поиска байта в слайсе
источник

а

а кто это in Go-go!
Ivan Kozlov
Подскажите, на сколько эффективный код. Нужно получать число-поддомен. Большая нагрузка!
http://1.domain.com
http://2.domain.com
http://3.domain.com
...

func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := string(ctx.Host())
   idx := strings.Index(host, ".")
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := ctx.Host()
   idx := bytes.Index(host, []byte("."))
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
источник

а

а кто это in Go-go!
а strconv для байтов у нас есть?
источник

C

Calculon in Go-go!
а кто это
а strconv для байтов у нас есть?
можно написать
источник

C

Calculon in Go-go!
а кто это
func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := ctx.Host()
   idx := bytes.Index(host, []byte("."))
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
ещё лучше errors.New() заранее создать
источник

а

а кто это in Go-go!
а кто это
а strconv для байтов у нас есть?
вот очень странно кстати
источник

а

а кто это in Go-go!
под капотом гоняют []byte
источник

ВС

Владимир Столяров... in Go-go!
а кто это
func GetNetworkId(ctx *fasthttp.RequestCtx) (int, error) {
   host := ctx.Host()
   idx := bytes.Index(host, []byte("."))
   if idx == -1 {
       return 0, errors.New("prefix not found")
   }
   val, err := strconv.Atoi(string(host[0:idx]))
   return val, err
}
Ну тут можно конечно через unsafe конвертировать ещё))
источник

а

а кто это in Go-go!
Владимир Столяров
Ну тут можно конечно через unsafe конвертировать ещё))
вот мне интересно
источник

а

а кто это in Go-go!
если в comptime известно
источник

а

а кто это in Go-go!
что слайс имеет ровно одну ссылку
источник

а

а кто это in Go-go!
можно ли без копирования заменить строку на слайс байтов
источник

ВС

Владимир Столяров... in Go-go!
а кто это
если в comptime известно
Ну... Нет по-моему
источник

C

Calculon in Go-go!
этот ctx.Host приходит хрен знает откуда
источник

C

Calculon in Go-go!
и уходит хрен знает куда
источник

а

а кто это in Go-go!
ну здесь да
источник