以前の記事で説明したように、私たちは自動 API ドキュメント生成ツールである LiveAPI の構築に取り組んでいます。 LiveAPI のバックエンドは Golang であり、私は Golang のユニークで優れた機能を発見しています。
知らない人のために説明すると、Golang (Go) は 2009 年に Google で設計されたプログラミング言語です。構文的には C に似ています。
Golang プロジェクトに取り組む前は、主に Node.js と Python Web フレームワークを使用していました。別のドメインから Golang に切り替える初心者にとって、最初は少し難しいかもしれませんが、一度練習して専門知識を獲得すれば、そこから離れることはありません。
私の最初の Golang プロジェクトは、Python CLI ツールである Glee を Golang に変換することでした。
Python は遅く、コンパイルされた単一の CLI バイナリを維持するのは非常に難しく、バイナリは Mac OS と互換性がない場合があることがわかりました。これらおよびその他の問題により、私たちは Golang への切り替えを余儀なくされました。以下は、切り替えの背景にあるストーリーと問題に関する Reddit の投稿です。
この記事では、私が Golang に惹かれたユニークな機能について説明します。
1.ゴルーチン - 軽量同時実行
func main() { go sayHello("World") // runs concurrently time.Sleep(1 * time.Second) } func sayHello(name string) { fmt.Printf("Hello, %s!\n", name) }
ゴルーチンは、独立してタスクを実行できる小さなワーカーのようなものだと考えてください。従来のスレッドよりもはるかに軽いため、パフォーマンスに影響を与えることなく何千ものスレッドを作成できます。
2.チャンネル - 内蔵通信
func main() { messages := make(chan string) go func() { messages <- "ping" }() msg := <-messages fmt.Println(msg) }
チャネルは、ゴルーチンが安全に通信できるようにするパイプのようなものです。 2 人がメモをチューブに通して渡すところを想像してください。1 人はメモを書いて入れ、もう 1 人はメモを取り出します。
3.延期 - クリーンアップが簡単になりました
func readFile() { file, err := os.Open("test.txt") defer file.Close() // Will run when function exits }
延期は、クリーンアップタスクのリマインダーを設定するようなものです。これは、ファイルを開いた直後に「忘れずにファイルを閉じるように」という付箋を貼るのと似ています。
4.インターフェイスの実装 - 暗黙的なコントラクト
type Writer interface { Write([]byte) (int, error) } type ConsoleWriter struct{} func (cw ConsoleWriter) Write(data []byte) (int, error) { return fmt.Println(string(data)) }
Go のインターフェイスは暗黙的に満たされます。型に適切なメソッドがある場合、そのインターフェイスは自動的に実装されます。それはクラブに参加するようなものです。メンバーシップを正式に宣言する必要はありません。クラブが要求することを実行できれば、自動的に参加します。
5.複数の戻り値 - ネイティブのエラー処理
func divide(a, b float64) (float64, error) { if b == 0 { return 0, errors.New("cannot divide by zero") } return a / b, nil } func main() { result, err := divide(10, 0) if err != nil { fmt.Println("Error:", err) return } fmt.Println("Result:", result) }
複数の戻り値により、Go でのエラー処理が自然かつ明示的になります。これは、買い物をするときに荷物とレシートの両方を受け取るようなものです。続行する前に、すべてが問題ないかどうかを確認できます。このパターンは、開発者がエラーを適切に処理することを奨励します。
これらは私が Go で気に入っている機能のほんの一部です。他にも、単一の実行可能バイナリ、高速パフォーマンス、型推論、組み込みテストのサポート、クロスコンパイルなどがあります。
2025 年に向けた抱負を立てているなら、Golang をリストに加えてください。後悔することはありません。読んでいただきありがとうございます!オープンソース プロジェクトに貢献して Golang を学びたい場合は、glee と Lama2 をチェックしてください。
以上が後悔しない Golang を学びましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。