type Buffer struct {
buf []byte // contents are the bytes buf[off : len(buf)]
off int // read at &buf[off], write at &buf[len(buf)]
lastRead readOp // last read operation, so that Unread* can work correctly.
}
duplicate field name Key in struct literal
matchFilter := bson.D{
bson.E{
Key: "$match",
Value: bson.D{
bson.E{
Key: "roommates",
Value: bson.D{
bson.E{Key: "$in", Value: []int{123}},
bson.E{Key: "$nin", Value: []int{3123}},
},
},
},
},
}
GO111MODULE=off go get github.com/go-chi/chi/v2
go mod vendor
, и зависимости перенесутся в папку vendor рядом с файлом go.mod.testIndicator := db.Indicator{
ID: primitive.NewObjectID(),
...
}
raster := canvas.NewRasterWithPixels(
func(_, _, w, h int) color.Color {
return color.RGBA{uint8(rand.Intn(255)),
uint8(rand.Intn(255)),
uint8(rand.Intn(255)), 0xff}
})
runtime.GC()
debug.FreeOSMemory()
type SliceHeader struct {
Pointer uintptr
Len int
Cap int
}
Проблема в том что эти адаптеры имеют одни и те же методы, делают одно и тоже (но по своему),
type Repository interface{
MethodA() error
MethodB() error
}
func TestRedis(t *testing.T) {
testRepo(t, NewRedis(...))
}
func TestMongo(t *testing.T) {
testRepo(t, NewMongo(...))
}
func testRepo(t *testing.T, repo Repository){
err := repo.MethodA()
if err != nil {
t.Errorf("methodA: %s", err)
}
err = repo.MethodB()
if err != nil {
t.Errorf("methodB: %s", err)
}
}
... но тут проблема с цикличным импортом (все адаптеры импортируют компоненты из repo).
sudo snap install go --channel=1.16/stable --classic
package main
import (
"fmt"
"math/rand"
"time"
)
type kelvin float64
func measureTemperature(samples int, sensor func() kelvin) { // measureTemperature принимает функцию в качестве второго параметра
for i := 0; i < samples; i++ {
k := sensor()
fmt.Printf("%v° K\n", k)
time.Sleep(time.Second)
}
}
func fakeSensor() kelvin {
return kelvin(rand.Intn(151) + 150)
}
func main() {
measureTemperature(3, fakeSensor) // Передает название функции другой функции
}
И при каждом запросе перебирать каждый элемент, сравнивать по полям структуры с нужными данными?
Будет ли это быстро когда база вырастит до 10 000 полей.
GOOS=android GOARCH=arm GOARM=7 go build
....
for i, _ := range arr {
arr[i] = append(arr[i], "ddddd")
}
....