タグ

2019年1月14日のブックマーク (5件)

  • Go 言語の値レシーバとポインタレシーバ

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

    sawa_zen
    sawa_zen 2019/01/14
  • クォータニオン (Quaternion) を総整理! ~ 三次元物体の回転と姿勢を鮮やかに扱う ~ - Qiita

    0. はじめに: クォータニオンについて思うこと はじめまして! NTTデータ数理システムで機械学習やアルゴリズムといった分野のリサーチャーをしている大槻 (通称、けんちょん) です。 記事は、東京大学航空宇宙工学科/専攻 Advent Calendar 2018 の 3 日目の記事として書きました。僕は学部時代を工学部 航空宇宙工学科で過ごし、情報理工学系研究科 数理情報学専攻で修士取得後、現職に就いて数年になります。 航空宇宙時代は人工衛星の姿勢制御について関心を抱き、特に磁気センサや磁気トルカを用いた姿勢制御系について研究していました。数理工学へと分野を変えてからも、当時お世話になった先輩方と磁気トルカを用いた姿勢制御手法について共同研究して論文を書いたり、ディープラーニングなどを用いた画像認識技術を追求する過程ではリモートセンシングに関する話題ものぼったりなど、航空宇宙業界とは何

    クォータニオン (Quaternion) を総整理! ~ 三次元物体の回転と姿勢を鮮やかに扱う ~ - Qiita
    sawa_zen
    sawa_zen 2019/01/14
    あとで読む
  • Goのarrayとsliceを理解するときがきた - Qiita

    対象 sliceしか使わないのでarrayのことは知らなくてもいいと思っているGopher 内容 arrayを理解するとsliceをもっと理解できる 参考 以下のページを主に参考にしたのでちゃんと知りたい場合はこっちを読んだほうがいい The Go Blog - Go Slices: usage and internals The Go Blog - Arrays, slices (and strings): The mechanics of 'append' きっかけ サイズを指定して宣言したsliceが引数の型チェックに引っかかり悩む、というおそらくは初歩的なつまづきをしてしまった。 func main() { s := [3]int{} takeSlice(s) // Error: cannot use s(type [3]int) as type []int in argument

    Goのarrayとsliceを理解するときがきた - Qiita
    sawa_zen
    sawa_zen 2019/01/14
  • Goを学びたての人が誤解しがちなtypeと構造体について #golang - Qiita

    はじめに タイトルをキャッチーかつ若干煽り気味にしたのは、そもそも記事を見てもらう確率を上げるためで他意はありません。なぜ読んでほしいのかというと、typeとstructについて、一部の機能に着目して、それがtypeとstructの全てだと誤解されるとマズいなと感じることが最近多いためです。 この記事で書いてあることは過去にもインタフェースの実装パターンや2016年度Go研修で取り上げていますが、今回は端的に分かりやすくなるようにまとめたいと思います。

    Goを学びたての人が誤解しがちなtypeと構造体について #golang - Qiita
    sawa_zen
    sawa_zen 2019/01/14
  • Goのstructとinterface - oinume journal

    社内でGo勉強会をやったのでその時に自分が発表した時の内容。オブジェクト指向的なことをGoでどう実現するのか、どの辺を諦めなくてはいけないのかをまとめてみた。 Goでのオブジェクト指向 Goでは基的にオブジェクト指向プログラミングはできないと思ったほうが良い。できるのはstructを定義して関数を追加していくことだけである。 http://play.golang.org/p/7w9nbHDec1 package main import "fmt" type User struct { Id int Name string } // 文字列化する関数 func (u *User) String() string { return fmt.Sprintf("%d:%s", u.Id, u.Name) } func main() { var user *User = &User{1, "oin

    Goのstructとinterface - oinume journal
    sawa_zen
    sawa_zen 2019/01/14