Я пытаюсь преобразовать строку в uint на 32-разрядную ubuntu, используя следующий код. Но он всегда преобразует его в uint64, несмотря на явное прохождение 32 в качестве аргумента в функции. Ниже в коде mw находится объект библиотеки image magick. Что возвращает uint
, когда вызывается mw.getImageWidth()
и mw.getImageHeight()
. Кроме того, он принимает аргумент типа uint
в функции resize.преобразовать строку в uint в go lang
width := strings.Split(imgResize, "x")[0]
height := strings.Split(imgResize, "x")[1]
var masterWidth uint = mw.GetImageWidth()
var masterHeight uint = mw.GetImageHeight()
mw := imagick.NewMagickWand()
defer mw.Destroy()
err = mw.ReadImageBlob(img)
if err != nil {
log.Fatal(err)
}
var masterWidth uint = mw.GetImageWidth()
var masterHeight uint = mw.GetImageHeight()
wd, _ := strconv.ParseUint(width, 10, 32)
ht, _ := strconv.ParseUint(height, 10, 32)
if masterWidth < wd || masterHeight < ht {
err = mw.ResizeImage(wd, ht, imagick.FILTER_BOX, 1)
if err != nil {
panic(err)
}
}
Ошибка:
# command-line-arguments
test.go:94: invalid operation: masterWidth < wd (mismatched types uint and uint64)
goImageCode/test.go:94: invalid operation: masterHeight < ht (mismatched types uint and uint64)
goImageCode/test.go:100: cannot use wd (type uint64) as type uint in argument to mw.ResizeImage
goImageCode/AmazonAWS.go:100: cannot use ht (type uint64) as type uint in argument to mw.ResizeImage
чем разница между UINT и uint32 или UINT и uint64? – Naresh
'uint32' - 32 бит,' uint64' - 64 бита, 'uint' - это реализация, 32 или 64 бит. См. [Спецификация языка программирования Go: числовые типы] (https://golang.org/ref/spec#Numeric_types). – peterSO
переменная должна быть u32, err ... not u64 =) – bsbak