package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
num := make(chan int, 1000) // 1000 - размер буффера канала
wg.Add(1)
go func() {
for i := 0; i < 1000; i++ {
num <- i
fmt.Printf("write to channel: %d\n", i)
// задержка нужна только на время теста
time.Sleep(100 * time.Microsecond)
}
close(num)
wg.Done()
}()
wg.Add(1)
go func() {
for {
val, ok := <-num
if !ok {
break
}
fmt.Printf("goroutine 1 got: %d\n", val)
}
wg.Done()
}()
wg.Add(1)
go func() {
for {
val, ok := <-num
if !ok {
break
}
fmt.Printf("goroutine 2 got: %d\n", val)
}
wg.Done()
}()
wg.Wait()
}
type T struct {
Count int
}
func (t *T) Func(s string) error {
t.Count // <- получение доступа к полю структуры
}
if errors.Is(err, mongo.ErrNoDocuments) {
// документа нет
}
// если у вас Го до 1.13
if err == mongo.ErrNoDocuments {
// документа нет
}
template <typename T>
class hashed {
T value_;
size_t hash_;
friend class std::hash<hashed<T>>;
public:
template <typename... Args>
constexpr hashed(Args&&... args) :
value_(std::forward<Args>(args)...),
hash_(std::hash<T>()(value_))
{}
// rule of zero
constexpr T& get() & noexcept { return value_; }
constexpr const T& get() const& noexcept { return value_; }
constexpr T&& get() && noexcept { return value_; }
constexpr const T&& get() const&& noexcept { return value_; }
};
namespace std {
template <typename T>
struct hash<hashed<T>> {
constexpr size_t operator()(const hashed<T>& x) const noexcept {
return x.hash_;
}
};
}
std::unordered_map<hashed<std::string>, int> cache;
auto it = cache.find("property1"); // хеш на этапе выполнения
// хеш на этапе компиляции, работает с constexpr std::string из C++20
constexpr auto h = hashed<std::string>("property1");
auto it2 = cache.find(h); // предрасчитанный хеш
Как сделать так, чтобы, получив обновлённое приложение, конкуренты не смогли узнать его новые функции?
git pull origin/name
. Это последовательное выполнение git fetch
и git merge
. Fetch берет изменения с remote-репозитория, а merge пытается применить их к соответствующим локальным веткам.