TypescriptをGoに変換して覚えてみる
はじめに
こんにちわ!こんばんわ!ご観覧ありがとうございます。
Golangに興味があるので、普段使っているTypescriptで行う処理をどのように描くことができるのか、覚えるために記録してみます。
Golangとは
Golang、またはGoはGoogleが開発した静的型付けされたコンパイル言語です。Goはシンプルさと効率性を重視して設計されており、ソフトウェアの開発を迅速かつ効率的に行うことができる。
また、Goは並行処理をサポートしており、複数のタスクを同時に実行することが可能である。
早速はじめてみる
TypescriptのTypeの定義を変換:
Typescript
type TypeName = { name: string; age: number; is_member: boolean; };
type TypeName struct { Name string Age int IsMember bool }
- オブジェクトの場合、structをつける
- :(カンマ)と;(セミコロン)が不要
- stringは同じ、number -> int, boolean -> boolになる(まだまだありそうですが)
map関数の代用:
Typescript
let numbers = [1, 2, 3, 4, 5]; let squares = numbers.map(num => num * num);
numbers := []int{1, 2, 3, 4, 5} squares := make([]int, len(numbers)) for i, num := range numbers { squares[i] = num * num }
- Golangでは、
map
関数の代わりにfor
ループを使用する。 - 配列の定義方法がint(Typeです!){1,2,3,4,5}(実際の中身です!)
なんだか見慣れないmakeだのrangeだの出てきてるので、友達に聞いてみたので以下にまとめます。
numbers := []int{1, 2, 3, 4, 5}
: これはGoで整数のスライスを作成しています。:=は変数宣言と同時に初期化を行うためのショートハンドです。
squares := make([]int, len(numbers))
: make関数は組み込み関数で、スライスやマップ、チャネルなどの動的サイズの型を初期化します。ここでは、numbersと同じ長さの整数型のスライスを作成しています。
for i, num := range numbers
: rangeキーワードはGoのforループで使用され、スライスやマップを反復処理します。rangeはインデックスと値の両方を返します。ここでは、iはインデックス(0から始まる)で、numはそのインデックスに対応する値です。
squares[i] = num * num
: これは各要素を二乗して、結果をsquaresスライスの対応する位置に格納しています。
ExportとImportについて:
Export
Typescript
export const exportFunc = () => {};
Golangでは、大文字で始まる名前(関数、型、変数など)はエクスポートされ、パッケージ外からアクセス可能である。
小文字で始まる名前はエクスポートされず、同じパッケージ内からのみアクセス可能である。
Golang
package main // Exported function func SayHello() { fmt.Println("Hello, world!") } // Unexported function func sayGoodbye() { fmt.Println("Goodbye, world!") }
上記の例では、SayHello
関数は大文字で始まるためエクスポートされ、パッケージ外からアクセス可能ですが、sayGoodbye
関数は小文字で始まるためエクスポートされず、同じパッケージ内からのみアクセス可能となる。
Import:
Typescript
import importFunc from '../import'
Golangでは、import
ステートメントを使用して行います。例えば、fmt
パッケージをインポートするには次のようにする
package main import "fmt" func main() { fmt.Println("Hello, world!") }
上記の例では、fmt
パッケージがインポートされており、その中のPrintln
関数が使用できる。