package main
import (
"fmt"
"time"
)
func main() {
date := time.Date(2020, 1, 1, 12, 0, 0, 0, time.UTC)
var days int = 32
var start int = 0
for s := start; s < days; s++ {
res := date.Add(time.Duration(s) * time.Hour * 24)
format := res.Format("2006-01-02")
fmt.Println(format)
}
}
У нас изображения хранятся в минио, то есть там нет прямой ссылки на изображение, которую я мог бы передать. Если бы все было так просто, то я бы не спрашивал)
$ go run -gcflags "-m" test.go
# command-line-arguments
./test.go:13:13: inlining call to fmt.Println
./test.go:9:6: moved to heap: val
./test.go:13:14: &val escapes to heap
./test.go:13:13: main []interface {} literal does not escape
./test.go:13:13: io.Writer(os.Stdout) escapes to heap
<autogenerated>:1: (*File).close .this does not escape
0xc00001a0a8
0xc00001a0a8
0xc00001a0a8
Diff:
--- Expected
+++ Actual
@@ -2,5 +2,5 @@
(int) 1,
- (int) 2,
(int) 3,
- (int) 4
+ (int) 5,
+ (int) 7
}
assert.Equal(t, struct1, struct2)
images := db.Read()
for _, img := range images {
fmt.Println(img.Original)
fmt.Println(img.Crop)
}
images := db.Read()
for _, img := range *images {
fmt.Println(img.Original)
fmt.Println(img.Crop)
}
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
"strings"
)
func main() {
r, err := os.Open("data.txt")
if err != nil {
log.Fatal(err)
}
defer r.Close()
s, err := excludeLines(r)
if err != nil {
log.Fatal(err)
}
fmt.Println(s)
}
func excludeLines(r io.Reader) (string, error) {
var lines []string
s := bufio.NewScanner(r)
for s.Scan() {
text := s.Text()
if strings.Contains(text, "^") {
continue
}
lines = append(lines, text)
}
err := s.Err()
if err != nil {
return "", errors.Wrap(err, "Scan")
}
return strings.Join(lines, "\n"), nil
}
var v []Personal
db.Select(&v,...)
type MyInterface interface{
MyMethod()
}
type Personals []Personal
func (p Personals) MyMethod() {}
func get() MyInterface {
var v Personals // equal []Personal
db.Select(&v,...)
return v
}
func main {
log := logrus.New()
// Передача логера через параметр в функции
pkg1MyFunc(log, "data1", "data2")
// Структура с конструктором
s := NewMyStruct(log, "data")
s.Do("params")
}
// Передача логера через параметр в функции
func pkg1MyFunc(log logrus.FieldLogger, data1, data2 string) {
log.Info(data1, data2)
}
// Структура с конструктором
type MyStruct struct {
log logrus.FieldLogger
data string
}
func NewMyStruct(log logrus.FieldLogger, data string) *MyStruct {
return &MyStruct{log: log, data: data}
}
func (s *MyStruct) Do(params string) {
s.log.Info(s.data, params)
}
type MyStruct struct {
log logrus.FieldLogger
store storage.Store
data string
}
func NewMyStruct(log logrus.FieldLogger, store storage.Store, data string) *MyStruct {
return &MyStruct{log: log, data: data, store: store}
}
func (s *MyStruct) Do(params string) {
s.log.Info(s.data, params)
s.store.AddParams(params)
}
package main
import (
"fmt"
)
func main() {
arr := [5]float64{1, 2, 3, 4, 5}
i := 3
x := append([]float64{}, arr[:i]...)
x[2] = 42
fmt.Println(x)
fmt.Println(arr)
}
package main
import (
"fmt"
"log"
"time"
)
func main() {
location, err := time.LoadLocation("Europe/Moscow")
if err != nil {
log.Fatal(err)
}
in := time.Now().In(location)
fmt.Println(in.Format("Z07:00"))
fmt.Println(in.Format("-0700"))
fmt.Println(in.Format("Z07"))
fmt.Println(in.Format("-07"))
}
// Вывод:
// +03:00
// +0300
// +03
// +03
go test -bench .
и всё заработает.$ go test -bench .
goos: darwin
goarch: amd64
pkg: api
BenchmarkAwesomeToJSON-8 3000000 470 ns/op
PASS
ok api 1.895s
go test -bench . test_test.go test.go
, но проще без них.func BenchmarkAwesomeToJSON(b *testing.B) {
awesome := NewAwesome("123456789", "Total awesomeness", 9.99, true)
b.ResetTimer()
for i := 0; i < b.N; i++ {
awesome.ToJSON()
}
}