whileD'iary

日記とか

Golangのinterface自分用覚え書き

Goでinterfaceを少しだけ使ってみたのでそれの覚え書き

Goのinterfaceはメソッドリストでこれをすべて実装していればいいらしいです。他にもfunc f(args ...interface{})のように、任意の型を引数に取るための使われるinterface{}というのもある。こっちは他にも使い方ありそうだし全然調べてないので割愛。

最初に言ったのを少し書いてみたのが下のコード

giste189d2be8e3c05465490e27293e52cc0

NeovimでGo言語を快適に書きたい

最近Go言語を触り始めました。最初はvscodeとかatomを試してたんですけどなんかしっくりこなかったのでvimを使おうと思った。 でもvimも完全に「画面分割ができるメモ帳」のような使い方をしていたので、どうせならとneovimに移行した。移行というのも怪しいが。

Neovimを入れる

導入からinit.vimとかdein、deopleteなどのプラグインの設定はこちらを参考にしました。

qiita.com

Go用のプラグインを入れる

GitHub - fatih/vim-go: Go development plugin for Vim

GitHub - zchee/deoplete-go: deoplete.nvim source for Go

とか入れると良さそうだったのでこの2つを入れた。 下のようにgo.tomlとか作って{lazy : 1}で読み込んだ。 間違ってなければ多分これでgoファイルじゃないときはプラグインは読み込まれない。

#go.toml
[[plugins]] 
repo = 'fatih/vim-go'
on_ft = 'go'

[[plugins]]
repo = 'zchee/deoplete-go'
build = 'make'
on_ft = 'go'
depends = ['deoplete.nvim']
hook_source = '''
    let g:deoplete#sources#go#gocode_binary = $GOPATH . '/bin/gocode'
'''

あと、deoplete-goのREADMEにも書いてあったけどgocode_binaryでgocodeのバイナリーのパスを設定しなければならなと動かない。なんでかわからないけど見落としてて最初「なんで動かんの……」って焦ってた。

go get -u github.com/nsf/gocode

まとめ

まだまだ使い始めたばかりですが、:wするだけでgo fmtを走らせてくれたりtestするとQuickfixリストを出してくれたり、とてもいいです。

だだすくりぷと

某大盛りラーメン屋のインスパイア系ラーメン屋である田田という店が八王子にある。

ここは僕が通っている大学のポケサーを筆頭に、他体型がふくよかな方に人気で、特にトッピングの仕方が特徴的で「ニンニク入れますか?」と聞かれたら「ヤサイアブラ」や「ニンニクマシカラメ」などの呪文を唱えなければならない。

 

そこで思った。この""ヤサイ""を""マス""というのはBrainF**kのポインターをインクリメントするのとほぼ同じではないか?

 

マシ == pointer++    

!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

書いた。

BrainF**kの解説はいっぱいあるのでコードとハローワールドだけ

 

DADAscript

 

Brainfuckのインタプリタ

なにかのアドベントカレンダー24日目

f:id:whileD:20161224175612p:plain

嘘です。Spring bootとかGo言語の記事は書きません。最近fuckしか言ってないんでBrainfuckについて書こうと思います。

Brainfuckの仕様はwikipediaとかに書いてますが一応書いておきます。

  • ">" ポインタをインクリメントする
  • ”<” ポインタをデクリメントする
  • ”+” ポインタが指す値をインクリメントする
  • ”-” ポインタが指す値をデクリメントする
  • "." ポインタが指す値を出力する
  • ”,” 入力から1byte読み込んで、ポインタが指す先に代入する
  • "[" ポインタが指す値が0なら、対応する"]"の直後にジャンプする
  • "]" ポインタが指す値が0でないなら、対応する"["にジャンプする

以上です。シンプルですね。以下がC++で実装したコードです。その下がBrainfuckでのHello world!です。

 

gist29eaacfdaafc11764e18fc18136d8b8c

 

これを実行して

+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.

を入力すると

Hello, world!

と出力されます。

解説

なし。感じてください。

 

 

それでは皆さんもどんどん脳を犯していってください。

このアドベントカレンダーの最後はかったーさんです。