ブックマーク / zenn.dev/kariya_mitsuru (3)

  • [Go] json.Unmarshal と json.Decoder の使い分け ~ json.Decoder に親しむ

    はじめに 今やあらゆるアプリケーションは Go で書かれていると言っても過言ではない(過言)。そして、今やあらゆるデータは json であると言っても過言ではない(過言)。 となると、Go で json を扱う頻度も必然的に多くなる。そして初めて Go で json をデコードするコードを書こうとした人は、必ずこの問題にぶち当たる。 「json.Unmarshal と json.Decoder は何が違うのか?そしてどちらを使えばいいのか?」 そしてググると大抵以下のような答えにたどり着く。 入力が文字列(string)やバイト列([]byte)の場合は json.Unmarshal() を使う 入力がストリーム(io.Reader)の場合は json.Decoder を使う なるほど、確かにパッと見はそれでいいように思える。思えるんだが、よく見ると実は他にもいくつか考慮すべき点がある。

    [Go] json.Unmarshal と json.Decoder の使い分け ~ json.Decoder に親しむ
    toshikish
    toshikish 2023/12/10
  • みんな代替トークン使とる。使てへんのお前だけ。

    なお、よく「ダイグラフ」と呼ばれたりもするが、見ての通りキーワード型の物も結構あるし、キーワード型を除いたとしても必ずしも「ダイ」(2文字)ではない(%:%:)。 ちゃんと「代替トークン」(あるいは「オルタナティブトークン」)と呼んであげよう。 ちなみにこれらの名前も予約語なので、例えば and や or と言った関数名や変数名は使えない。 and って言う関数書こうとしたら何故かエラーが出た的な話を稀に聞くが、まさにコイツらの仕業である。 なお、「トークン」と名前がついている通り、コンパイラがソースをトークン化する際に処理されるので、文字列中や他の識別子中では代替トークンとはみなされない。 まぁ当たり前っちゃあ当たり前なんだが… 使用例(その1) さっそく使用例を見ていこうと思う。 使用前 #include <iostream> int main() { int a[] = { 114,

    みんな代替トークン使とる。使てへんのお前だけ。
    toshikish
    toshikish 2021/12/04
  • 環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる

    何だと!? タイトルのまんま。 恥ずかしながらこれ今まで知らなかった。 もしかして常識だったりする? ちなみに確認したのは Linux だけど、glibc の posix サブディレクトリ配下の execl*execvpe の挙動なので glibc 使ってればみんな一緒じゃないかな?知らんけど… 環境変数 PATH が設定されていない時 unset PATH とした状態。 この場合、PATH=/bin:/usr/bin と設定されているのと同じ意味になる(追記も参照のこと)。 当然カレントディレクトリは含まれていない。 環境変数 PATH が空の時 PATH= とした状態。 「PATH 環境変数が設定されていない時」とは異なる事に注意。 この場合、PATH=. と設定されているのと同じ意味になる。 つまり、カレントディレクトリが含まれている。 環境変数 PATH の最後が : で終わってい

    環境変数 PATH に空文字があるとカレントディレクトリが指定されているのと同じ意味になる
    toshikish
    toshikish 2021/09/25
  • 1