Skip to the content.

コンパイルしたいじゃん

スクリプト言語やってるとインタープリタばっかつかっちゃって全然コンパイルしない。別にそれはそれで便利でアジャイルっぽくていいんだけど。 たまにコンパイルしたくなる。実行ファイルっていう響きが悪くない。 コンパイルにはメリットも多いしね。そういうところから golang また書き始めた。

構造体の埋め込みの挙動が気になった

package main

import "fmt"

type A struct {
	Name        string
	AnotherName string
}

type B struct {
	A
}

type C struct {
	Name string
	A
}

func main() {
	a := A{"hoge", "moge"}
	b := B{A{"fuga", "foo"}}
	c := C{"bar", A{"foobar", "foobarbar"}}

	fmt.Printf("a-> %s, %s \nb-> %s, %s \nc-> %s, %s, %s", a.Name, a.AnotherName, b.Name, b.AnotherName, c.Name, c.A.Name, c.A.AnotherName)

	return
}

こういうとき(構造体を埋め込んで同じ名前のフィールド・メソッドがあるとき)、出力どうなんの?っておもった。結局はこう。

➜  tmp go run test.go
a-> hoge, moge 
b-> fuga, foo 
c-> bar, foobar, foobarbar%      

上書き元は捨てられるわけじゃなくて、ちゃんと取ってあるけど、省略呼び出しが出来なくなるだけみたい。便利。

2010年代言語やってない

一瞬Flutter欲があってDart勉強してたけど、最近やってない。Rustもきになるしな~。TypeScript も一時期書いてたけどもう1年ぐらい書いてない。 2010年代言語も毎日触りたいな。