https://go101.org/blog/2022-08-22-some-undocumented-chang
@golang_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  go101.org
  
  Some Undocumented Changes in Go 1.18 and 1.19
-Go 101
  -Go 101
Golang online books, articles, tools, etc.
❤6👍3🔥2
  Вывод всех перестановок символов слайса или строки
Реализуйте функцию perm(), которая принимает слайс или строку и печатает все возможные комбинации символов.
Решение:
Пишите свое решение в комментариях👇
#junior #golang
@golang_interview
Реализуйте функцию perm(), которая принимает слайс или строку и печатает все возможные комбинации символов.
Решение:
package main
import "fmt"
// Perm calls f with each permutation of a.
func Perm(a []rune, f func([]rune)) {
        perm(a, f, 0)
}
// Permute the values at index i to len(a)-1.
func perm(a []rune, f func([]rune), i int) {
        if i > len(a) {
                f(a)
                return
        }
        perm(a, f, i+1)
        for j := i + 1; j < len(a); j++ {
                a[i], a[j] = a[j], a[i]
                perm(a, f, i+1)
                a[i], a[j] = a[j], a[i]
        }
}
func main() {
Perm([]rune("abc"), func(a []rune) {
        fmt.Println(string(a))
})
}Пишите свое решение в комментариях👇
#junior #golang
@golang_interview
👍5❤2🔥1
  Параллельные тесты
Параллельные тесты в #golang позволяют выполнять несколько тестов одновременно. Это особенно полезно для тестов, связанных с IO поскольку другие тесты могут выполняться во время периодов ожидания, а значит, вы будете меньше времени ждать выполнения вашего набора тестов.
Это также поможет вам убедиться в том, что тесты не используют глобальное состояние, иначе они станут нестабильными.
Для этого достаточно пометить тест как параллельный следующим образом: изображение 1.
Бенчмарк-тесты
Бенчмарк-тесты - это отличный способ измерить и оптимизировать эффективность определенных частей кода.
Например, вот два способа конкатенации строки.
С помощью +: изображение 2.
Использование strings.Builder: изображение 3.
Если мы их запустим код, то получим следующий результат:
BenchmarkStringConcat-12 1000000 1200 ns/op BenchmarkStringBuilder-12 5000000 250 ns/opЭто означает, что тест выполнялся за
1000000 и 5000000 итераций, при этом stringConcat затрачивалось 1200 наносекунд на операцию, а strings.Builder - 250. Таким образом, strings.Builder гораздо эффективнее.@golang_interview
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍15❤1🔥1😁1
  Немного расширенный функционал Mutex в грядущем пакете "go101․org/nstd".
vs
 
#Golang
@golang_interview
  m.Lock()
  defer m.Unlock()vs
 defer m.Lock().Unlock()
https://github.com/golang/go/issues/63941
#Golang
@golang_interview
🤔18👍8🔥5🤯4❤3👎1😁1