Movatterモバイル変換


[0]ホーム

URL:


はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

タグ

関連タグで絞り込む (3)

タグの絞り込みを解除

golangに関するWindymeltのブックマーク (8)

  • Go の iterator を触ってみた - emahiro/b.log

    Overview 今月にもリリースされる予定のGo1.23 に同梱されているiterator package をだいぶ今更ながら触ってみました。 どういうものか、ということの概要は知っていましたが、まぁ一旦自分でも触ってみるか、ということで触ってみて、実際動かしながら触れることで思ったことを残しておきます。 実行方法 手元はGo1.22 なのでGOEXPERIMENT=rangefunc を付けてGo のファイルを実行しました。 感想 先に感想だけ書いておくと、自分としてはiterator は少し直感的じゃないなという印象を持ちました。 例えばシンプルなiterator 処理を書こうと思うと以下になりますが、 func TestSeq(t *testing.T) { for v := range seq { t.Log(v) } } func seq(yeild func(i

    Go の iterator を触ってみた - emahiro/b.log
    • brainf*ckのインタプリタを書いて高速化しよう - Qiita

      なんだこれは 少し前に、Goのプログラムをチューニングして遊びたいなと思い、brainf*ckインタプリタを作って高速化しました。 忘れないうちにそのときのことを書いておこうという記事になります。 高速化!高速化!うおおおおお! できたもの こちらが最終的に完成したものになります。 ベンチマークにはbfでマンデルブロ集合を描画するプログラムを利用しています。 それを私の手元のPCでインタプリタにわせたときの実行時間を減らしていくという形で高速化を進めました。 始めた当初は描画に42.36sかかったところ、最終的には2.271sで描画できるようになりました。ついでにbfをllvm irにトランスパイル?するプログラムも書いていて、それを使ってコンパイルした場合は0.466sでマンデルブロ集合を描画することができます。 皆さんもぜひ高速化を… 途中からは以下のようなルールを設け、友人らと速度

      brainf*ckのインタプリタを書いて高速化しよう - Qiita
      • Task(go-task)を使い始めた - TypeScriptで開発中

        Goで書かれているTaskという名前のタスクランナーを使い始めた。仕事でMakeをタスクランナーとして使っていたところを、Taskに置き換えようという動きがあったので、仕事で使いつつプライベートでも使って慣れようとしている。 Taskでは Taskfile.yml というYAMLファイルにタスクを書いて、task コマンドで実行する。Makefileよりは読みやすいし書きやすそうでいい。 taskfile.dev 補完 taskコマンドの補完が効かなくて不便だと思っていたら、補完のセットアップをしたらできると同僚に教えてもらった。zsh用のセットアップをすると無事補完が効いて、効率的に使えるようになってよかった。 ホーム|タスク #補完のセットアップ task -l と task -a taskコマンドには -l または --list というオプションがあるので、これでタスクの一覧が確認で

        Task(go-task)を使い始めた - TypeScriptで開発中
        Windymelt
        Windymelt2023/12/28非公開
        Goで書かれたタスクランナーあるんだ
        • 強い思想: Go を Web 開発に採用する上で

          フラットパッケージは正義か? 私がSNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かにGo文化圏においては一定の支持を集めている。Go の公式リポジトリや有名ライブラリなんかも,Java などの言語に比べたらずっとパッケージ階層が浅く,ネストしていないものが多いと思う。 しかし,それも 「コードベースを小さく保つ」 を大前提としていることを忘れてはならない。 DDD やクリーンアーキテクチャといった言葉が飛び交うぐらいの規模であれば,パッケージを切ることに関して後ろめたさを感じる必要はない。 むしろ,大きなコードベースが誕生することが開発初期から簡単に予見できるような状況で, YAGNI という言葉に甘んじて設計を放棄するのは極めて悪手であると私は断言する。身を以て失敗を経験した私の口から伝えたい。

          強い思想: Go を Web 開発に採用する上で
          Windymelt
          Windymelt2023/09/09非公開
          大規模だとキツそうなのは同意
          • golangのenumは型が違うと違うものとして扱われる - Acme::AnaTofuZ->new;

            タイトルの通りです。 以下のようにint型のFooTypeとBarTypeを宣言して、それぞれ60をenumで持つ値をチェックしてみます package main import "fmt" type FooType int type BarType int const ( Hoge FooType = 60 Nyan FooType = 61 Baz BarType = 60 ) var someTypes = []interface{}{ Hoge, Baz, } func main() { for _, t := range someTypes { if t == Baz { fmt.Println("same") } else { fmt.Println("difference") } } if Baz == 60 { fmt.Println("Baz is 60") } else

            golangのenumは型が違うと違うものとして扱われる - Acme::AnaTofuZ->new;
            Windymelt
            Windymelt2023/06/13非公開
            Scalaのopaque type aliasに近いなと思ったけど実行時も区別されるのは便利そう
            • CodeReviewComments

              You signed in with another tab or window. Reload to refresh yoursession. You signed out in another tab or window. Reload to refresh yoursession. Youswitched accounts on another tab or window. Reload to refresh yoursession. Dismiss alert

              CodeReviewComments
              Windymelt
              Windymelt2019/12/12非公開
              Goのreceiverの名前にselfやthisを使ってはいけない。ほぼ他の引数と同様に扱われるからである。他のOOP言語のように特別な意味をGoは与えないからである。
              • Go 言語の値レシーバとポインタレシーバ

                「レシーバ」とはGo 言語はある種のオブジェクト指向プログラミング (OOP) 言語であり、 OOP 言語の慣例通り、メソッドを呼び出される対象のことを「レシーバ」と呼びます。 ちなみになぜ「レシーバ」と呼ぶのかというと、昔の OOP 言語の文脈ではメソッド呼び出しのことを「メッセージの送信」と言い、メソッドを呼び出される側は「メッセージの受信側」だからです。 「値レシーバ」と「ポインタレシーバ」Go 言語では「値」と「ポインタ」が明示的に区別されているため、たとえばある構造体に対してメソッドを定義する場合でも、「値型」に対する定義なのか「ポインタ型」に対する定義なのかはっきりと区別しなければなりません。それぞれについて簡単に説明します。 値レシーバ「値型」に対してメソッド定義されたものが「値レシーバ」です。Go 言語では構造体は値なので、以下の例では Person という値型に対して

                Windymelt
                Windymelt2019/05/19非公開
                レシーバなるほど
                • Go言語(Golang) はまりどころと解決策

                  Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的はGo を批判することではなくGoGo であるがゆえにC++/Java/Python など利用者がGo を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めてGo を触る人がスムーズにGo を使い始められるようにすることです。私個人はGo はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

                  • 残りのブックマークを読み込んでいます1

                  お知らせ

                  公式Twitter

                  • @HatenaBookmark

                    リリース、障害情報などのサービスのお知らせ

                  • @hatebu

                    最新の人気エントリーの配信

                  処理を実行中です

                  キーボードショートカット一覧

                  j次のブックマーク

                  k前のブックマーク

                  lあとで読む

                  eコメント一覧を開く

                  oページを開く

                  はてなブックマーク

                  公式Twitter

                  はてなのサービス

                  • App Storeからダウンロード
                  • Google Playで手に入れよう
                  Copyright © 2005-2025Hatena. All Rights Reserved.
                  設定を変更しましたx

                  [8]ページ先頭

                  ©2009-2025 Movatter.jp