無限大な夢のあと

テニスとアニメが大好きな厨二病SEのブログ

「プログラマ脳を鍛える数学パズル」でGolang入門 1問目(10進数で回文) Go言語仕様理解編

普段はJavaプログラマな私が「プログラマ脳を鍛える数学パズル」の問題を解いていく中で、Golangに入門していく記事となります。

dke-msy-node.hatenablog.com

上記の記事で、解答、解答までのプロセスなどを記述したので、本記事では個々の文法の要素をJavaと比較して理解を深めていきます。


7-0.実装後の疑問点潰し(深堀り)

以下の記事でstringとruneについて、確認。
knightso.hateblo.jp

上記の記事で、意味がよく分からなかったり、A Tour of Goを読んだ時の疑問点を潰していく
Unicodeのコードポイント
・byteスライス
・int8、int32などの違い
・fmt.Printfのフォーマットの書式の確認(%#、%U、%x)

7-1 Unicodeのコードポイント
→以下の記事で理解。
バイトオーダーの話や文字コード周りはあんまり調べすぎると戻ってこれなくなるので、ほどほどに。
equj65.net
バイトオーダ - ビッグエンディアン/リトルエディアン

以下の書籍を半分くらい読んで中身をすっかり忘れてしまっているので、再度よみ直さねばと実感。

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)



7-2 byteスライス
配列とスライスの違いがわからず。
以下の記事で大まかに理解。

www.slideshare.net



7-3 int8、int32などの違い
以下の記事のGoの言語仕様から確認。
golang.jp

Javaに当てはめて考えてみる。

uint8 符号なし 8-ビット 整数 (0 to 255)
uint16 符号なし 16-ビット 整数 (0 to 65535)
uint32 符号なし 32-ビット 整数 (0 to 4294967295)
uint64 符号なし 64-ビット 整数 (0 to 18446744073709551615)
Javaではプリミティブ型の整数は符号付きだが、JDK1.8で符号なし整数として扱うメソッドがラッパークラスに追加された。
Java型メモ(Hishidama's Java type Memo)


・int8 符号あり 8-ビット 整数 (-128 to 127)
Javaのbyte型

・int16 符号あり 16-ビット 整数 (-32768 to 32767)
Javaのshort型

・int32 符号あり 32-ビット 整数 (-2147483648 to 2147483647)
Javaのint型

・int64 符号あり 64-ビット 整数 (-9223372036854775808 to 9223372036854775807)
Javaのlong型。

float32 IEEE-754 32-ビット 浮動小数
Javaのfloat型

float64 IEEE-754 64-ビット 浮動小数
Javaのdouble型

complex64 float32の実数部と虚数部を持つ複素数
complex128 float64の実数部と虚数部を持つ複素数
Javaの標準ライブラリには存在しない。

byte uint8の別名(エイリアス)
rune int32の別名(エイリアス)

uint 32 または 64 ビット
→32bitマシンか64bitマシンかでサイズに違いが出る。

int uintと同じサイズ
uintptr ポインタの値をそのまま格納するのに充分な大きさの符号なし整数

string型の変数 != byte配列

文字列型は文字列の値を表現します。文字列はbyteのスライスのように振舞いますが値は不変です。つまり一度作成されたあとは文字列の内容を変更できません。文字列型として事前宣言済みの型はstringです。

文字列型の要素はbyte型データを持っているため、一般的なインデックスを使ったアクセスが可能です。ただし要素のアドレスを取得することはできません。すなわちs[i]がある文字列のi番目のバイトであるとして、&s[i]とすることはできません。文字列の長さは組み込み関数lenを使用して調べることができます。文字列sがリテラルであれば文字列長はコンパイル時に定数となります。




7-4 fmt.Printfのフォーマットの書式の確認(%#、%U、%x)

以下の記事で確認。
golang.jp
・%U ユニコードフォーマット: U+1234; "U+%x"と同じ。デフォルトは、4桁
・%# この値をGo言語の構文で表現する
・%x 基数16、10以上の数には小文字(a-f)を使用



深掘りもほどほどにして、2問目も頑張ります。

改訂2版 基礎からわかる Go言語

改訂2版 基礎からわかる Go言語

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

スターティングGo言語 (CodeZine BOOKS)

スターティングGo言語 (CodeZine BOOKS)