Hlavní navigace

Názor k článku Konstrukce pro řízení běhu programu v jazyce Go od ivoszz - Tentokrát trochu se zpožděním a navíc se jedná...

  • Článek je starý, nové názory již nelze přidávat.
  • 20. 12. 2018 0:11

    ivoszz

    Tentokrát trochu se zpožděním a navíc se jedná jen o "štěky" :).

    1. Co se týče mrtvého kódu (kap. 3), v první chvíli jsem si říkal, že to přece není možné, protože mrtvý kód jsem občas nucen při ručním ladění zakomentovávát a je to otravné. Go překladač mrtvý kód sice umožňuje, ale snad všechny editory automaticky instalují gometalinter, který má jako jeden z linterů detekci mrtvého kódu. Takže doplnění povzdechu na konci třetí kapitoly: ano je to tak standardní, že jsem si v první chvíli ani neuvědomil, že to hlasí linter a ne překladač.

    2. A tenhle bod je už vyloženě subjektivní. V tabulce s typy pro iteraci přes for range bych osobně u typu kanál dal křížek spíše do prvního sloupce a samotnou hodnotu až do druhého sloupce. První hodnota je totiž vždy index a druhá hodnota pak samotná hodnota prvku (přesněji kopie hodnoty, což vyplývá ze symbolu přiřazení). A protože index u kanálu nemá smysl, tak se nevrací. To rozdělení na index a hodnotu má hlubší význam. Pokud chci v těle cyklu pracovat s immutable hodnotami, index ignoruji, pokud z nějakého důvodu potřebuji modifikovat originální proměnné, pracuji s indexem. Nakonec jen doplnění, že druhou hodnotu lze tiše vynechat a psát for i := range []string{"jedna", "dva", "tři"} { ... } místo for i, _ := range []string{"jedna", "dva", "tři"} { ... }

    A teď na závěr si uvědomuji, že se z článku trochu vytratil podrobnější popis iterace přes řetězec, což je škoda. Pokud k řetězci přistupuji přes meze, přistupuji na konkrétní byte. V ASCII je to fuk, ale u Unicode znaků ne. Pokud chci postupovat po jednotlivých Unicode znacích, musím použít for range nebo systémovou knihovnu strings.