limited := io.LimitReader(c, file_size)
err = io.Copy(newfile, limited)
func main() {
arr := []byte{4, 3, 2, 1, 6, 3, 77, 8, 3}
sort.Slice(arr, bytesAsc(arr))
fmt.Println(arr)
}
func bytesAsc(arr []byte) func(i, j int) bool {
return func(i, j int) bool {
return arr[i] < arr[j]
}
}
func main() {
arr := []byte{4, 3, 2, 1, 6, 3, 77, 8, 3}
sort.Sort(BytesAsc(arr))
fmt.Println(arr)
}
type BytesAsc []byte
func (a BytesAsc) Len() int { return len(a) }
func (a BytesAsc) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a BytesAsc) Less(i, j int) bool { return a[i] < a[j] }
buffer = make([]point,0,20)
case <-ctx.Done():
return nil, ctx.Err()
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
resp, err := srv.RPCClient.Call(ctx, topic, payload)
if err != nil { // тут вернет ошибку "context cancelled" при таймауте
srv.logger.Error("RPC call error. ", err)
return err
}
func getA() []IA {
var arr = make([]IA, 10)
arr[0] = a{}
return arr
}
package main
import (
"errors"
"fmt"
"strings"
)
type validator interface {
Validate() error
}
type FieldEmail string
func (fi *FieldEmail) Validate() error {
if fi == nil {
return errors.New("invalid field")
}
if !strings.Contains(string(*fi), "@") {
return errors.New("invalid field")
}
return nil
}
func NewFieldEmail(str string) *FieldEmail {
fieldEmail := FieldEmail(str)
return &fieldEmail
}
func checkValidators(validators ...validator) error {
for _, v := range validators {
if v == nil {
continue
}
if err := v.Validate(); err != nil {
return err
}
}
return nil
}
func main() {
fmt.Printf("Error: %v\n", checkValidators(NewFieldEmail("test@test")))
var email *FieldEmail
fmt.Printf("Error: %v\n", checkValidators(email))
}
st := make([]string, len(stro))
for i := range stro {
func(i int) {
word := stro[i]
sts, err := au(word, na, la, ge)
if err != nil {
// .....
}
st[i] = sts
}(i)
}
ctx, cancel := context.WithTimeout(r.Context(), config.Read().HTTP.Timeout.Request*time.Second)
sync.WaitGroup
.<-ctx.Done()
внутри приведенной вами функции происходит раньше, чем такое же чтение канала внутри функции router.middlewareHandler(h). Поэтому нужно ждать не отмены контекста, а завершения работы горутины.if ctx.Err() != nil {
. Но у вас вместо этого ==, что вообще обесценивает код внутри этого ифа.