Skip to content

Instantly share code, notes, and snippets.

@tenntenn
Last active July 14, 2020 10:31
Show Gist options
  • Save tenntenn/721878dc5c0f9352bd00cd75798d84de to your computer and use it in GitHub Desktop.
Save tenntenn/721878dc5c0f9352bd00cd75798d84de to your computer and use it in GitHub Desktop.

go2goの仕組みを追え!!

@tenntenn
Copy link
Author

(*types.Interface).HasTypeList
golang/go@master...dev.go2go#diff-e2c0d36a77ccf3da4f5998ab49123d9bR532
インタフェースが型リストを持ってるかどうか

@tenntenn
Copy link
Author

(*types.Interface).IsComparable
golang/go@master...dev.go2go#diff-e2c0d36a77ccf3da4f5998ab49123d9bR547
==で比較でけいるかどうかのチェック

@tenntenn
Copy link
Author

(*types.Interface).IsConstraint
golang/go@master...dev.go2go#diff-e2c0d36a77ccf3da4f5998ab49123d9bR561

IsConstraint reports t.HasTypeList() || t.IsComparable().

なるほど。メソッドに==が含まれるのか?

@tenntenn
Copy link
Author

go2goパッケージの中を見ていく。

rewriteしてる部分。
https://github.com/golang/go/blob/9fe9a324c4577fb765e37b42b218612da58952d4/src/go/go2go/rewrite.go#L249:6

@tenntenn
Copy link
Author

instantiate୦୦Print୦main୮aHexみたいな名前で書かれる
https://github.com/golang/go/blob/9fe9a324c4577fb765e37b42b218612da58952d4/src/go/go2go/names.go#L42

@tenntenn
Copy link
Author

instantiate୦୦Print୦main୮aHexaは無害化した.か?
https://github.com/golang/go/blob/9fe9a324c4577fb765e37b42b218612da58952d4/src/go/go2go/names.go#L64

@tenntenn
Copy link
Author

他のパッケージから必ずインポートできるようにするため

type Importable୦ int

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment