Я использую драйвер MySQL для Golang, представленный здесь
https://github.com/go-sql-driver/mysql
Одна из вещей, которую я пытаюсь сделать, - сохранить переменную базы данных в глобальном соединении. Согласно документации, sql.Open() должен возвращать указатель на структуру базы данных, поэтому я попытался сохранить ее как
var db *DB
Однако это привело к ошибке
undefined: DB
Следующее, что я пробовал, - это посмотреть исходный код для драйвера MySQL, и я нашел фрагмент кода здесь https://github.com/go-sql-driver/mysql/blob/master/driver.go
func (d MySQLDriver) Open(dsn string) (driver.Conn, error) {
Итак, я попытался сохранить переменную как driver.Conn - однако мне не удалось (неправильный импорт). Я также не смог импортировать драйвер.
Последнее, что я попробовал, - использовать рефлекс, чтобы принести имя переменной в свет.
package main
import (
"fmt"
"reflect"
)
import "database/sql"
import _ "github.com/go-sql-driver/mysql"
func main() {
db, _ := sql.Open("mysql", "root:[email protected]/Tracker")
yt := reflect.TypeOf(db).Kind()
fmt.Printf("%T: %s\n", yt, yt)
}
К сожалению, это тоже не сработало - оно отображается как указатель, а не тип переменной, на которую он фактически указывает.
Я не понимаю, как это понять сейчас. Заранее благодарим за помощь!