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)
}
min_word_len = 1
min_infix_len=2 # минимум 2
SELECT field FROM index WHERE MATCH('@field *тостер нереально крутой site!!1,.*')
SELECT field FROM index WHERE MATCH('@field *тостер__нереально_крутой_site!!1,.*')
charset_table = 0..9, A..Z->a..z, _, a..z, \
U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451, \
U+002D, U+003A, U+002B, U+0028, U+0029
# А..Я->а..я, а..я, Ё->ё, ё,
# -, :, +, (, )
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()
}
}
String.prototype.replaceAll = function(search, replace){
return this.split(search).join(replace);
}
// Используем
"текст".replaceAll('\n', '<br>')
"текст".split('\n').join('<br>')
RUN chmod +x ./service
FROM alpine
ADD ./service /
RUN chmod +x /service
EXPOSE 8000
ENTRYPOINT ["./service"]
Через какое то время удалять?