@devopsiarz: Go jest tak prosty, że można się go nauczyć w jeden czy dwa weekendy. Do niedawna nawet nie umiał w typy generyczne. Nie ma sum types, nie ma RAII, nie ma makr, nie ma wsparcia dla early return itp. Po prostu nie ma wielu użytecznych mechanizmów, których w przypadku Rusta trzeba się nauczyć, ale które powodują że kod jest znacznie bardziej zwięzły a język bardziej ekspresywny. Za to ma
  • Odpowiedz
Go jest tak prosty, że można się go nauczyć w jeden czy dwa weekendy


Ja się go parę lat uczę i ciągle mnie zaskakuje, zwłaszcza w runtime i w multithreading. Po latach stwierdzam, że niektóre rzeczy można pisać znacznie lepiej, prościej i czytelniej, za parę lat pewnie stwierdzę to samo o ewolucji dzisiejszej (zresztą Rusta u mnie też to dotyczy). Więc można coś pisać, w Ruście też można po dwóch weekendach coś pisać.
  • Odpowiedz
@miltem: wcześniej pisałem przez lata w C. Go to evolved C jak dla mnie, bardziej podobne do C niż Python np. Język ogólnie fajny, dużo wbudowanych ficzerów związanych z concurrency, trudniej buga zrobić bo standard library dużo rzeczy ogarnia. Z drugiej strony język trochę nisza, nie zawsze są w necie odpowiedzi na bardzo szczegółowe pytania, standard library miejscami gorsze od libc (np. nie ma UTMP(5)), performance niższy niż Rust albo
  • Odpowiedz
@r00ti: trochę szczęścia było bo na interview pytanie było co sądzę o UNIX shell a że używałem tego przez lata (btw trudno na unixie inaczej) i dziesiątki pytań na SO odpowiedziane to mam opinię o wadach i zaletach wyrobioną a o Go to powiedziałem tylko że się uczę.

Teraz też jestem trochę w embedded bo soft co piszemy w Go działa na urządzenie na ARM Cortex-A x32 z embedded Linux
  • Odpowiedz
  • 0
Treść przeznaczona dla osób powyżej 18 roku życia...
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Chciałbym dla każdej litery ze słownika: pl.wiktionary.org znaleźć linka do następnej strony. Robię to w ten sposób:

b := bytes.NewReader(body) //body []byte
scan := bufio.NewScanner(b)
for scan.Scan() {
text = scan.Text()
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TheBloody: hi i'm notch, you are playing in illegal minecraft server on illegal "non premium" account, please send me your credit card or send 20$ to that account (cyferki) ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Są jakieś godne aktualne książki na temat programowania w go do polecenia? Zakladajac, ze ogarnia się programowanie w innych językach. Lubię czasami makulaturę tego typu poczytać w nowych rzeczach.
#golang
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via otwarty_wykop_mobilny_v2
  • 1
@p4sik: Zobacz książkę od Kernighana, jest całkiem sensowna.
Moim zdaniem teraz nie ma sensu kupować, bo jak wyjdzie 1.18 to większość pozycji będzie przestarzała. Golang 2.0 też się wydaje całkiem niedaleką przyszłością, więc zakup książek może okazać się dość słabą inwestycją.
  • Odpowiedz
ale śmieszek, no nie mogę

@Ki3mon: no nie smieszek, normalnie odpowiedzial. net/http to dobra odpowiedz i w 99% przypadkach zaspokoi wszystkie Twoje potrzeby, jest standardowo stosowany od indywidualnych projektow po duze firmy. Jezeli pytasz o cos innego, to prawdopodobnie masz jakies niszowe, specyficzne zastosowanie - wiec zamiast ironizowac napisz po prostu czego szukasz i jakie masz wymagania, to wtedy bedzie mozna cos podpowiedziec.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@MiXereg: w amd64 nie da się używać całej zaadresowanej pamięci, bo procesory po prostu tego nie wspierają. ZGC z Javy wykorzystuje ten fakt kodując pewne metadane w nieużywanych bitach. To co napisałeś jest prawdą: teoretyczne golangowy slice mógłby mieć więcej elementów niż 2^31, ale przez to, że inny int jest signed to się nie da. To nie zmienia faktu, że jest to mniej niż 2^32, czyli wszystko się zgadza
  • Odpowiedz
W golangu wartości są przekazywane przez wartość. Dlaczego poniższy kod nie dodaje mi 10 do slice?
Wykorzystałem pointer, ale wartość się nie zmieniła.

func test(x *[]int) {
xx := *x
xx = append(xx, 10)
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Codix: w uproszczeniu, nie wdając się w szczegóły, to append zwraca nowy slice, a nie zmienia istniejący. A ty ten nowy slide zapisujesz do lokalnie stworzonej nowej zmiennej. By to działało to powinieneś zrobić:

func test(x *[]int) {
*x = append(*x, 10)
}

Ale ładniej (bardziej
  • Odpowiedz
@dixtel: no wlasnie ja tez od dobrych kilku lat tylko robie ms w Go i - jakkolwiek cel generykow jest jasny i widze dla nich zastosowanie - to sam osobiscie nie mam szczegolnej potrzeby. Z ostatnich kilku lat pracy znalazlbym pewnie ze 2-3 realne przyklady gdzie faktycznie by mi sie przydaly, stad moje pytanie. W aplikacjach osobiscie prawie nie mam na to potrzeby, jesli juz to w bibliotekach.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@kontra: mi najbardziej brakuje podstaw np. sort|uniq, klonowanie, struktury set. Zauważyłam, że jest dużo gorzej jak piszę testy np. jakieś API w gRPC.
  • Odpowiedz
@Utylizacja: ile jeszcze będziecie tym tutaj śmiecić? Nie łapiecie, że żart powtórzony kilka razy przestaje śmieszyć? Było to śmieszne za pierwszym razem
  • Odpowiedz
@Utylizacja: Kanał założony 3 tygodnie temu jedno pytanie to 30 zł a ma wrzucone 278 filmów więc już teraz wróżka zarobiła 8340 z samych pytań jeszcze trochę więcej klientów to będzie zarabiać lepiej niż programista15k ( ͡° ͜ʖ ͡°)
  • Odpowiedz