Sobes.tech

Golang

ana paket func main() { c := make(chan int, 1) 3 kez döngü { select { varsayılan: println(1) case <-c: println(2) case c <- 1: println(3) } } }

367

```go func fail() { panic("Başarısız!") } func main() { fmt.Println("Başlangıç!") var wg sync.WaitGroup wg.Add(1) go func() { defer func() { if e := recover(); e != nil { fmt.Println(e) } }() fail() wg.Done() }() wg.Wait() fmt.Println("Bitti!") } ```

225

Neden Elasticsearch'i seçtiniz? Başka hangi seçenekler vardı? Bir şey mi seçtiniz yoksa sadece ELK zaten vardı mı?

211

Elasticsearch kullanarak hızlı işlem araması için bir şeyler yaptığını söylüyorsun. Bu nedir, kaç işlem var ve bundan ne fayda sağlanıyor?

186

ana paket içe aktar ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Merhaba Dünya!" fmt.Println("Çıkış!") } ölüm hatası: tüm goroutine'ler uyuyor - ölümcül kilit! goroutine 1 [kanal alımı]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Program çıktı: durum 2.

186

func fetch(ctx context.Context, u User) (string, error) { // ağda bir şeyler yapıyoruz time.Sleep(time.Millisecond * 10) // gecikmeyi taklit et return u.Name, nil //return "", errors.New("bazı hata") } func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() }

182

Elasticsearch uygulandıktan sonra kullanıcılar veya teknik destek hizmetinden herhangi bir ürün geri bildirimi oldu mu?

173

ana paket func main() { c := make(chan int) 3 kez döngü { select { varsayılan: println(1) case <-c: println(2) case c <- 1: println(3) } } }

159

package main import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") }

158

ana paket içe aktar ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Merhaba Dünya!" fmt.Println("Çıkış!") } ölüm hatası: tüm goroutine'ler uyuyor - deadlock! goroutine 1 [kanal alımı]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Program çıktı: durum 2.

149

var defaultTxOptions = &sql.TxOptions{} const defaultCurrency = "RUB" func CreateUserWithDefaultCurrency(ctx context.Context, db *sql.DB, email, passwordHash string) error { tx, err := db.BeginTx(ctx, defaultTxOptions) if err != nil { return err } defer func() { if err != nil{ tx.Rollback() } }() _, err = tx.Exec("INSERT INTO users (email, password) VALUES (?, ?)", email, passwordHash) if err != nil { return err } rows, err := tx.Query("SELECT id FROM users WHERE email = ?", email) if err != nil { return err } defer rows.Close() id := 0 for rows.Next() { err = rows.Scan(&id) if err != nil { return err } } _, err = tx.Exec("INSERT INTO balances (user_id, currency, current_balance) VALUES (?, ?, 0)", id, defaultCurrency) if err != nil { return err } return tx.Commit() }

147

func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() } return names, nil }

147
/2