Как передать магию и ссылку на функции - PullRequest
0 голосов
/ 28 сентября 2018

Могу ли я узнать, как передать imagick.MagickWand struct в функции и применить к ней методы?Кажется, что imagick.NewMagickWand возвращает тип *imagick.MagickWand, не так ли?

Я не могу это сделать, продолжаю получать сообщение об ошибке: ERROR_WAND: ContainsNoImages `MagickWand-0'.

Как передать правильную структурную ссылку на функцию, чтобы mw можно было непрерывно использовать в этих функциях?

func generateImage() error {
    // skip error handling
    var err error 

    mw := imagick.NewMagickWand()
    defer mw.Destroy()

    err = createCanvas(mw, "red") // create canvas
    err = compositeIcon(mw, "c:/icon.png") // add icon
    err = addText(mw, "Hello world") // add text

    err = mw.WriteImage("c:/output") // get the output
}

func createCanvas(mw *imagick.MagickWand, color string) error {
    // skip error handling
    var err error
    pw := imagick.NewPixelWand()
    defer pw.Destroy()

    pw.SetColor("blue")
    err = mw.NewImage(200, 100, pw)
    return nil
}

Можетпожалуйста помоги?Новичок здесь.:)


Обновление:

Пример, который я привел, правильный .Передача по ссылке выполняется правильно в примере выше , я получил ошибку, потому что я пропускаю мой код и отлаживаю неправильные строки.Извините за путаницу.

Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Если mw имеет тип *imagick.MagickWand, то *mw имеет тип imagick.MagickWand.

То есть mw - это указатель на этот тип иОператор * разыменовывает указатель на сам тип .

mw := imagick.NewMagickWand() // Now mw is a *imagick.MagickWand
*mw // Is a imagick.MagickWand
...