В Go, в отличие от таких языков, как Python / JavaScript / Perl, переменные имеют строгие типы и строгие границы.Вы должны написать явный код, чтобы сделать преобразование строки из / в целое число.Это полезно для написания более безопасных и более производительных программ.
Кроме того, если переменная хранится в interface{}
, необходимо использовать утверждение типа (или переключатель типа) для дальнейшего использования содержимого сопределенный тип.
Вот ваш фиксированный код :
package main
import "fmt"
import "log"
import "strconv"
func main() {
var limit interface{}
limit = "50"
page := 1
offset := 3
if limit != "ALL" {
// Type assertion
s, isString := limit.(string)
if !isString {
log.Fatalf("limit is not a string but %T", limit)
}
// Conversion from string to int, with error handling
l, err := strconv.Atoi(s)
if err != nil {
log.Fatalf("%s: %v", limit, err)
}
offset = l*page - l
}
fmt.Println(offset)
}
Однако я предлагаю вам просто использовать тип string
для предельной переменной.