iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
Modern Web

Go 快 Go 高效: 從基礎語法到現代Web應用開發系列 第 1

【Day01】序章 | 什麼是 GO ? 和其他現代語言相比又是如何?

  • 分享至 

  • xImage
  •  

前言

很高興今年又能夠報名鐵人賽的活動,那今年一樣是以完賽為目標邁進!
去年我寫的是前端,那今年就來挑戰寫後端吧!
先說說自己對前後端的感受好了,我覺得前端能夠讓我找到成就感的地方來自於介面的美感設計,和使機型不會跑版的能力,我個人認為在這一方面的天賦使我能夠很開心地投身於前端開發上 ; 至於後端,由於他不像前端可以即時看到精美的介面,所以我勢必得從其他方面去尋找能夠產生成就感的事,很慶幸由於我的努力和熱情,我很快就發現了讓自己成就感得以滿足的條件,那就是架構設計!我發現比起前端,我在撰寫後端時,對於架構設計會更加來的重視,像是 DDD(Domain-driven design) 設計方式,或是更為完整的的 MonolithDirect AccessGateway Aggregation LayerFederated Gateway,還有學 Golang 不能不認識的 Microservices 這些也都是蠻有挑戰的學習,但學會後卻會讓人產生異常有成就感的事,所以我想只要能找到屬於自己的成就在,那在未來的開發道路上也會更加自信且不會只想逃避吧。(終於要開始進入正題了XD)

What is Golang?

在學一個語言時,我們勢必都得先問過自己為何會想接觸嘗試這一門新語言不是嗎?
那到底學習Golang的目的究竟在何處呢?
以下將帶入我的個人觀點,來為大家好好解釋究竟為何學 Go。

Golang(Go 語言)是由 Google 開發的一種開源編程語言,最早於 2009 年推出。它的設計目標是提高軟體開發效率,特別針對大規模、分散式系統的需求。

1. 高效的併發處理

Golang 的併發模型(Concurrency)是其最強大的功能之一。它通過 goroutines 和 channels 提供輕量級的併發處理,相較於 Java 或 C++ 等語言的執行緒模型,Go 的併發性能更高,佔用的資源更少。因此,Go 非常適合開發高併發、高效能的應用程式,例如網絡伺服器、分佈式系統和微服務架構。

2. 內建的垃圾回收機制

Golang 內建垃圾回收(Garbage Collection),使得開發者不需要手動管理記憶體。相比於 C 或 C++ 等需要自行管理記憶體的語言,Go 減少了開發者因為記憶體管理錯誤(如記憶體洩漏或雙重釋放)導致的問題,讓開發流程更為順暢。

3. 高度跨平台支援

Go 語言讓你很方便地在一台電腦上編譯出適合其他作業系統的應用程式。例如,你可以在 macOS 上寫程式,然後直接編譯出適合 Linux 使用的執行檔。這叫做跨平台編譯。
Go 的標準函式庫就是為了支援多種作業系統而設計的,加上 Go 支援「條件編譯」,可以針對不同的平台選擇性地包含程式碼。這使得你不需要在每個平台上都重新編譯或做特別的調整。
這個特性讓部署變得更簡單,因為你只需要在開發機器上就能產生適合不同作業系統的可執行檔,免去了在每個目標系統上配置開發環境的麻煩。

4. 強大的標準庫 (📎官方 Library)

Go 擁有豐富的標準庫(Standard Library),特別是在網絡、I/O、格式轉換等領域,這使得開發網絡應用或後端服務變得非常高效。開發者無需依賴太多的第三方庫,就可以構建穩定的應用。

5. 靜態&強型別所帶來的好處:

  • 當你用 Go 編譯應用程式時,它會自動把所有需要的函式庫(包括標準函式庫)打包到最終的執行檔案中,這叫做靜態編譯。意思是,當你把這個執行檔放到任何支援的作業系統上,它可以直接運行,不需要依賴其他外部的函式庫或安裝額外的東西。

    相比之下,像是使用動態連結的語言(例如 C 或 Python),編譯出來的程式檔案通常不包含所有函式庫,而是需要在執行時由作業系統去找到並加載這些外部函式庫。如果主機上沒有安裝正確版本的函式庫,這個應用程式可能就無法運行。

    Go 的這種方式讓它的應用程式更容易移植和部署,因為只要你有這個編譯好的執行檔,基本上就可以在任何支援的系統上直接執行,不需要額外的配置。

  • 靜態和強型別特性使得在編譯期就能捕捉大部分的錯誤,這使它更安全。
    而動態語言會在執行期才發現這些錯誤,錯誤修復成本較高。

  • 在執行時期有較好的性能表現,因為程式的型別已經在編譯期確定,不需要在執行時期進行型別檢查或轉換,減少了額外的運行成本。這使得 Go 可以接近 C 或 C++ 這些語言的性能。

總結

我個人體感是覺得學 Golang 有點像在寫 C 和 Python 的混合版,我更願意叫它為現代版的 C 語言來去稱呼他,如果你看完這篇文章,對於Golang很有興趣的,歡迎接下去學習更多開發技巧,那我們下篇見。/images/emoticon/emoticon29.gif

延伸閱讀


下一篇
【Day02】開發環境架設 | VSCode之外新選擇... 來體驗 GoLand 的魅力吧!
系列文
Go 快 Go 高效: 從基礎語法到現代Web應用開發2
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言