タグ

goに関するinoueyuworksのブックマーク (4)

  • Rust なのか Go なのか | 民主主義に乾杯

    # Rust なのか Go なのか ひとりごと。色々、漁ってると、こんな雰囲気。 並列処理で もっと高速に書きたい → Go Go で大事なのは → goroutine ガシガシ書き込んで もっと高速に書きたい → Rust Rust で大事なのは → 所有権 # 1. 概観 Go と Rsut は全く用途が違うそうです。なので、 自分の用途に合わせて選ぶことになるかなと思いますが... Indeed! — Go (@golang) July 25, 2019 Go は文法がとてもシンプルです。 誰が書いても同じようなコードになるようなことを意識しているのかなと思われます。 それが元でよく Go を貶す記事が見受けられます。 Rust はコードが複雑になっても、ガシガシ書き込むような感じらしいです。その分だけ Go よりも高速に動作します。 Rustと競合? - Goへの誤解について (o

    inoueyuworks
    inoueyuworks 2020/11/11
    “Go は非同期処理をシンプルに書きつつマルチコア性能を引き出すのが強みです。 Rust は徹底してオーバーヘッドを排除してシングルコアの限界性能を引き出せるのが強みです"
  • Go 言語における Singleton Pattern

    今回は小ネタでお送りします。 いや,ネットでね,Go 言語での Singleton 実装をこんな感じに書く人をやたら見かけるのだが //Hello class type Hello struct{} var instance *Hello //GetInstance returns singleton instance func GetInstance() *Hello { if instance == nil { instance = &Hello{} } return instance } はっきり言って Singleton なめんな! ですよ。 そうそう。 プログラマで Singleton Pattern を知らない人はいないと思うけど,一応解説しておくと, Singleton Pattern というのは,あるクラスに対してプログラム全体でインスタンスがひとつだけ生成されるよう制限す

    Go 言語における Singleton Pattern
  • How do you print in a Go test using the "testing" package?

    I'm running a test in Go with a statement to print something (i.e. for debugging of tests) but it's not printing anything. func TestPrintSomething(t *testing.T) { fmt.Println("Say hi") } When I run go test on this file, this is the output: ok command-line-arguments 0.004s The only way to really get it to print, as far as I know, is to print it via t.Error(), like so: func TestPrintSomethingAgain(t

    How do you print in a Go test using the "testing" package?
    inoueyuworks
    inoueyuworks 2018/09/30
    テストで標準出力を表示する方法
  • Go 言語の値レシーバとポインタレシーバ

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

  • 1