Как правильно установить новую версию библиотеки в golang?

При импортировании новой версии библиотеки, возникла проблема. Делаю go get "github.com/adshao/go-binance/v2" не находит метод WsCombinedKlineServe которого нет на первой версии. Попробовал сделать go mod init "github.com/adshao/go-binance/v2", пишет при компиляции import cycle not allowed и package main становится красным. Подскажите, как мне такое исправить? И вообще это нормально что файл go.mod появляется в папке проекта? а вот, когда делаю go mod init "github.com/adshao/go-binance/v2" Мейн становится красным.

package main

import (
    "fmt"

    "github.com/adshao/go-binance/v2"
)

func main() {
    pairs := map[string]string{
        "BTCUSDT": "1m",
        "ETHUSDT": "1m",
    }
    wsKlineHandler := func(event *binance.WsKlineEvent) {
        fmt.Println(event)
    }
    errHandler := func(err error) {
        fmt.Println(err)
    }

    doneC, _, err := binance.WsCombinedKlineServe(pairs, wsKlineHandler, errHandler)
    if err != nil {
        fmt.Println(err)
        return
    }
    <-doneC
}

Файл go.mod

module github.com/adshao/go-binance/v2
go 1.15

Ответы (1 шт):

Автор решения: Pak Uula

Сделайте так.

  1. Для начала переименуйте ваш модуль. Удалите go.mod и инициализируйте его заново командой go mod init example.org/try/binance. Вместо example.org/try/binance может любое имя, которым вы хотите назвать ваш модуль.

После этой операци go.mod будет выглядеть как-то так:

module example.org/try/binance

go 1.16
  1. Добавьте библиотеку go-binance командой go get github.com/adshao/go-binance/v2

В консоли будет что-то вроде

go: downloading github.com/adshao/go-binance v2.3.5+incompatible
go: downloading github.com/adshao/go-binance/v2 v2.3.5
go: downloading github.com/bitly/go-simplejson v0.5.0
go: downloading github.com/gorilla/websocket v1.5.0
go get: added github.com/adshao/go-binance/v2 v2.3.5

а go.mod станет таким:

module example.org/try/binance

go 1.16

require github.com/adshao/go-binance/v2 v2.3.5 // indirect

Заодно рядом с go.mod появится файл go.sum.

  1. После того, как вы добавите go-binance в go.mod компилятор не будет ругаться на WsCombinedKlineServe:
PS> go run main.go
&{kline 1648726509274 ETHUSDT {1648726500000 1648726559999 ETHUSDT 1m 793582883 793582911 3404.00000000 3403.99000000 3404.00000000 3403.99000000 4.67000000 29 false 15896.66794500 3.46450000 11793.15800000}}
&{kline 1648726510988 BTCUSDT {1648726500000 1648726559999 BTCUSDT 1m 1310607031 1310607154 47175.82000000 47175.81000000 47175.82000000 47175.81000000 1.28785000 124 false 60755.37448040 0.75719000 35721.05914580}}
&{kline 1648726511632 ETHUSDT {1648726500000 1648726559999 ETHUSDT 1m 793582883 793582915 3404.00000000 3404.00000000 3404.00000000 3403.99000000 5.58290000 33 false 19004.17905400 4.32830000 14733.53320000}}
&{kline 1648726513008 BTCUSDT {1648726500000 1648726559999 BTCUSDT 1m 1310607031 1310607198 47175.82000000 47175.81000000 47175.82000000 47175.81000000 2.33832000 168 false 110312.15603140 1.59922000 75444.51486040}}
exit status 3221225786
→ Ссылка