自由気ままにブログ

地方零細企業プログラマがひっそりとなにかしています。

関数型メソッドを作ってみる

お久しぶりです。

f:id:nono138:20200421225917p:plain

  • 前書き

現在は社内開発を離れて、出向先でJAVAを扱うようになったので、久しくGoを書いていませんでした。

Goを触っていた時に、関数型のメソッドって作れるのかな?と思い、実際に書いてみました。

 

  • コード
package main

import "fmt"

type addt func(n1, n2 intint

func main() {
    addT := addt(add)
    fmt.Println(addT.multi(14))
}

// 和計算
func add(n1, n2 intint {
    return n1 + n2
}

// 積計算
func (f addt) multi(n1, n2 intint {
    return f(n1, n2) * 2
}
  • 結果
10
  • 解説

解説することもありませんが、Goは静的型付け言語であり、自分でさまざまな型(type)を定義することができます。

もちろん関数も例外ではありません。

コードでは、ただの関数add()を自分で定義したaddtにキャストしています。

後は、addで引数を足し算した結果を返し、メソッドで掛け算した結果を返しています。

 

  • 補足

別の書き方だと

fn := add
var ft addt
ft = fn
addT := ft

こんな風に書けたりしますが、個人的にちょっと余長な気がします。

 

addT := addt(add)

new()でインスタンス化させようしてもnil pointerで死ぬのでnew()は使わないように注意が必要です。

ちなみに、ポインタで宣言して渡そうとしてもtypeエラーでコンパイルが通らないのでそちらも駄目そうですね。

 

なにか対処方があれば教えて頂けると幸いです。

 

  • あとがき

久しぶりにこう言った文章を書いたので、読みにくかったりグタグタと感じてしまったら、申し訳ありません。

現状、出戻りしない限りはGoを仕事で使う機会には恵まれそうにないですね。

やっぱり、Goを書くのは他の言語に比べて、個人的に楽しく感じますね。

netで探さなくても、ある程度自分で自由に書けるところが気に入っています。

構造体無しのデータベース情報をゴリ押しでjson型にする

f:id:nono138:20200421225921p:plain

以前書いた、構造体無しでのDBデータを取得するやり方を紹介しました。

 

nono138.hatenablog.com

実際にデータをブラウザ側に送る時に、json型で送ることが多いと思いますが、構造体無しだとどうやってjson型にすればいいの??と思うかもしらませんがゴリ押しで行けます。

jsonファイルの作り方も一応、貼っておきます。

nono138.hatenablog.com

 基本的にこの2つの記事を参考にして頂ければ出来ます。

 

では、さっそくサンプルコードを見て見ましょう❗❗

 

続きを読む

構造体無しで、DB情報を取得する

f:id:nono138:20200421225917p:plain

最近、自作PCでめっきりコードを書かなくなったので、久しぶりのGo言語です。

 

以前、書いた構造体を用いてDBの情報を構造体に格納する方法を書きましたが、あれはnullが入ると処理が止まってしまったり、Scan関数の引数が膨大な数になったりと言う問題はあります。

以前のDB情報の取り方

 

nono138.hatenablog.com

 

 

今回書くコードはそこら辺を解消してくれます。

続きを読む

CPU無しで、BIOSアップデート

昨日に引く続き自作PCの作業に励んでいました。

 

EZ DebugLEDのCPUのライトが消えずに難儀していました。

BIOSアップデートの問題か、ピン折れのせいか原因が分からないので、1つづつ潰してみることにしました。

 

続きを読む

初めてPC組んでCPUピン折ったよ

 昨日、PCのパーツが届いたので、今日はPCの組み立てをしました。

BTOでも良かったのですが、せっかくの休みなのと、AMDを使ってみたいと言うことで自作にしました。

 

続きを読む