golang社區,go 社區

本文目錄一覽:

嘗試用golang 1.18泛型實現orm

這幾天golang社區對泛型的討論非常多的,一片熱火朝天的景象。對我們廣大gopher來說總歸是好事。

泛型很有可能會顛覆我們之前的很多設計,帶著這種疑問和衝動,我準備嘗試用golang泛型實現幾個orm的常見功能。

本文並沒完全實現通用的orm,只是探討其實現的一種方式提供各位讀者做借鑒。

雖然golang有了泛型,但是目前在標準庫sql底層還沒有改造,目前還有很多地方需要用到reflect。

調用方式

這個部分跟傳統的orm使用上沒有太大區別,沒辦法不使用反射的情況下,泛型的方式可能變得有點繁瑣。

調用方式

和創建table類似,寫入數據好像比沒有之前的orm有優勢。

讀取數據是非常高頻的操作,所以我們稍作封裝。

調用方式

稍微比原先的orm方式有了多一點想像空間,比如 在[T any]做更明確的約束,比如要求實現Filter定製方法。

鑒於本人能力還認證有限,目前還沒有發現泛型對orm劇烈的改進和突破的可能。未來如果go對底層sql做出改動,或者實現諸如Rust那種Enum方式,可能會帶來更多的驚喜。

為什麼golang中國社區獨大

通常來說,在IT和軟體領域,向來都是國外先進國家引領技術潮流,然後國內緩慢跟進。而到了Go語言這裡,恰恰反過來了,似乎暗示著在國外的主流軟體開發技術人員並不怎麼待見Go語言,Go只是在國內受到一幫人的盲目推崇而已,至於這幫人的眼光如何,反正我不看好。

2022年最值得學習的技術有哪些?

CDA數據分析師 出品

編譯:Mika

如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,編程語言就像引擎的燃料。

2021年很快就要結束了。如今,軟體開發行業正以前所未有的速度在全球蓬勃發展。在不久的將來,該行業在全球收入預計將超過3000億美元。

在越來越多的行業,擁有數據思維能力,會編程語言也變得日益重要,能夠編寫計算機程序也成為了當下最值得學習的技能之一。

在數字經濟的新形勢下,跟隨技術潮流的發展來學習新技術是十分必要的。2022年,你有計劃新學一門編程語言嗎?

在本文中我們列出了2022年值得學習的編程語言TOP 7,一起來看看吧。

01 Python

確切地說,Python是目前世界上最流行的編程語言,而且熱度一直很高。

統計數據顯示,Python在幾個主要的語言排名指數中一直名列前茅排。這也使其成為開發者的首選語言之一,也是企業使用語言的首要選擇。

無論是安卓或iOS應用開發,還是構建桌面應用,企業如今會僱用專門使用Python的開發人員。這也是意料之中的,因為Python有許多優勢,而且它是一種頂級的通用語言。

Python最大的優勢在於它相對容易學習,而且還加快了開發時間,這也是為什麼企業機構如此喜歡Python的原因。同時對於作為開發人員來說,Python還具有開源的優勢,並且在線社區非常活躍,這意味著你可以隨時得到指導和支持。

正由於Python如此流行,該領域並不缺乏人才,但這並不意味著你不應該學習這種全堆棧語言。這裡要注意一下,Python可能比Kotlin等其他語言速度慢,而且它不是移動設備的原生語言,可能會導致應用程序內存消耗高。

02 Kotlin

學習Kotlin的一大亮點在於,谷歌很喜歡使用該語言。事實上,自2017年以來,Kotlin一直是谷歌的首選軟體開發語言。

谷歌優先考慮基於Kotlin的應用程序的創新特性和功能,開發者只需用這種易於使用的語言編寫代碼,就可以輕鬆地在競爭中保持領先。最重要的是,你可以使用Kotlin作為WordPress編程實踐,構建WP網站或開發android應用程序、伺服器等。而且只要是使用Java的地方,你都可以使用Kotlin,因為它與這種流行的語言是互通的。

還值得注意的是,Kotlin很可靠,其應用程序的源代碼很容易維護,語言本身也很乾凈和緊湊,這使得它相當容易學習。不用說,Kotlin也通過更好的團隊協作和效率大大減少了開發時間。

03 JavaScript

在頂尖的編程語言中,不得不提JavaScript,它已成為桌面軟體、基於web的應用程序甚至手機應用程序的標杆性語言。

你現在可能會想,為了成為一名優秀的的開發者,你需要學習本文中提到的所有語言,事實上你掌握的語言越多,這越有利於你的職業發展。

要知道,如今開發團隊和公司一般都傾向於招募具有多項技能的開發人員,JavaScript能讓你如虎添翼。JavaScript的優勢在於,你幾乎可以用這種語言編寫任何代碼。而且它在電子商務行業中特別流行,用於編寫運輸應用程序以及其他後端以客戶為中心的應用程序。

所有這些都表明,學習JavaScript是一項非常有價值的技能。它的優勢在於速度性、多功能性和可靠性。同時JavaScript流行度很高,由於有巨大的在線社區,這也讓其易於學習。

04 C++

經過多年的發展,C++已經成為一種用於分析和研究目的的編程語言,現在它是遊戲開發的主要語言之一。這是因為C++是世界上最流行的遊戲引擎——虛幻引擎(Unreal Engine)的主要腳本語言。

如果你想在2022年成為遊戲行業一個有競爭力的開發者,不妨學一學C++。該語言對於系統軟體開發,以及將項目管理方法集成到PM應用程序和企業專有軟體中非常有用。同時,C++還支持面向對象編程以及多種其他編程模式,這使C++具有高度的通用性,而且也比其他一些編程語言更容易學習。

在使用C++時,唯一麻煩的是沒有自動垃圾回收器,這意味著你需要手工清除無用數據。內置的friends函數和全局變數可能會帶來一些安全風險,你可以通過管理訪問點來避免這些風險。

05 Golang

Golang最早出現在2009年,但它被認為是一種相當新的語言。近年來,無論是在前端還是後端,Golang都在開發社區掀起了一波浪潮。

Golang是由谷歌推出的,主要目的是將推進函數式編程的發展,它具有許多C語言應有的功能,比如包括垃圾收集器、更好的內存安全性和管理、結構類型等等。

對於要處理敏感信息的的軟體來說,Golang是非常不錯的選擇。例如中小企業的計費軟體以及需要強大工具來管理金融交易和數據的大型企業。不過,Golang學習起來要花費的時間精力更多,但對於有抱負的開發人員來說,如果未來想從事web和應用程序開發,那麼這個語言是很值得學習的。

同時,它還是開源的,因此你有很多機會可以相當快地掌握這種語言。如今的企業和用戶都需要簡單而直觀的應用程序,Golang在代碼效率、簡單性和安全性的優勢就顯得十分重要了。

06 Dart

在谷歌開發的新式編程語言中,Dart作為一種簡單的編碼語言在業界迅速崛起,它遵循C風格的語法。這意味著它相當容易學習,而且它在多平台和跨平台開發中有著廣泛的應用。

作為軟體開發者,你需要一種可以用於為各種平台編寫應用程序的語言。

就拿可穿戴設備來說,如今可穿戴設備在許多方面改變了我們的生活,而且必須與其他設備連接,因此你得確保這些設備在不同平台的應用中的無縫操作。這裡Dart就能派上用場了,你可以Dart為任何電子設備構建應用程序。

學習Dart並不是必須的,但它確實比學習JavaScript這類傳統語言有一些優勢。Dart更容易學習,語法更簡單,尤其是在快速開發和輸出成為常態的時代,這是十分珍貴的特質。

07 Solar 2D

最後,Solar 2D(前身為Corona)是專門為開發手機遊戲而構建的軟體開發工具包。考慮到手機遊戲日益流行的事實,到2022年僅在美國,手機遊戲內容市場的價值就將超過1210億美元。

考慮到這一點,Solar 2D正是移動遊戲行業中必不可少的編程工具包。Solar 2D目前只是基於2D,但這並不是問題,因為在安卓和iOS遊戲中2D應用程序的表現也十分亮眼。Solar 2D的偉大之處在於它使用了強大的Lua腳本語言,並在魔獸、憤怒的小鳥和文明等遊戲中廣為使用。

編程語言排行榜

01、Python

無論是安卓或iOS應用開發,還是構建桌面應用,企業如今會僱用專門使用Python的開發人員。這也是意料之中的,因為Python有許多優勢,而且它是一種頂級的通用語言。

Python最大的優勢在於它相對容易學習,而且還加快了開發時間,這也是為什麼企業機構如此喜歡Python的原因。同時對於作為開發人員來說,Python還具有開源的優勢,並且在線社區非常活躍,這意味著你可以隨時得到指導和支持。

正由於Python如此流行,該領域並不缺乏人才,但這並不意味著你不應該學習這種全堆棧語言。這裡要注意一下,Python可能比Kotlin等其他語言速度慢,而且它不是移動設備的原生語言,可能會導致應用程序內存消耗高。

02、Kotlin

學習Kotlin的一大亮點在於,谷歌很喜歡使用該語言。事實上,自2017年以來,Kotlin一直是谷歌的首選軟體開發語言。

谷歌優先考慮基於Kotlin的應用程序的創新特性和功能,開發者只需用這種易於使用的語言編寫代碼,就可以輕鬆地在競爭中保持領先。最重要的是,你可以使用Kotlin作為WordPress編程實踐,構建WP網站或開發android應用程序、伺服器等。而且只要是使用Java的地方,你都可以使用Kotlin,因為它與這種流行的語言是互通的。

03、JavaScript

在頂尖的編程語言中,不得不提JavaScript,它已成為桌面軟體、基於web的應用程序甚至手機應用程序的標杆性語言。

你現在可能會想,為了成為一名優秀的的開發者,你需要學習本文中提到的所有語言,事實上你掌握的語言越多,這越有利於你的職業發展。

要知道,如今開發團隊和公司一般都傾向於招募具有多項技能的開發人員,JavaScript能讓你如虎添翼。JavaScript的優勢在於,你幾乎可以用這種語言編寫任何代碼。而且它在電子商務行業中特別流行,用於編寫運輸應用程序以及其他後端以客戶為中心的應用程序。

所有這些都表明,學習JavaScript是一項非常有價值的技能。它的優勢在於速度性、多功能性和可靠性。同時JavaScript流行度很高,由於有巨大的在線社區,這也讓其易於學習。

04、C++

經過多年的發展,C++已經成為一種用於分析和研究目的的編程語言,現在它是遊戲開發的主要語言之一。這是因為C++是世界上最流行的遊戲引擎——虛幻引擎(Unreal Engine)的主要腳本語言。

如果你想在2022年成為遊戲行業一個有競爭力的開發者,不妨學一學C++。該語言對於系統軟體開發,以及將項目管理方法集成到PM應用程序和企業專有軟體中非常有用。同時,C++還支持面向對象編程以及多種其他編程模式,這使C++具有高度的通用性,而且也比其他一些編程語言更容易學習。

在使用C++時,唯一麻煩的是沒有自動垃圾回收器,這意味著你需要手工清除無用數據。內置的friends函數和全局變數可能會帶來一些安全風險,你可以通過管理訪問點來避免這些風險。

05、Golang

Golang最早出現在2009年,但它被認為是一種相當新的語言。近年來,無論是在前端還是後端,Golang都在開發社區掀起了一波浪潮。

Golang是由谷歌推出的,主要目的是將推進函數式編程的發展,它具有許多C語言應有的功能,比如包括垃圾收集器、更好的內存安全性和管理、結構類型等等。

怎麼學習golang

已經有好多程序員都把Go語言描述為是一種所見即所得(WYSIWYG)的編程語言。這是說,代碼要做的事和它在字面上表達的意思是完全一致的。 在這些新語言中,包含D,Go,Rust和Vala語言,Go曾一度出現在TIOBE的排行榜上面。與其他新語言相比,Go的魅力明顯要大很多。Go的成熟特徵會得到許多開發者的欣賞,而不僅僅是因為其誇大其詞的曝光度。下面我們來一起探討一下谷歌開發的Go語言以及談談Go為什麼會吸引眾多開發者: 快速簡單的編譯 Go編譯速度很快,如此快速的編譯使它很容易作為腳本語言使用。關於編譯速度快主要有以下幾個原因:首先,Go不使用頭文件;其次如果一個模塊是依賴A的,這反過來又取決於B,在A裡面的需求改變只需重新編譯原始模塊和與A相依賴的地方;最後,對象模塊裡面包含了足夠的依賴關係信息,所以編譯器不需要重新創建文件。你只需要簡單地編譯主模塊,項目中需要的其他部分就會自動編譯,很酷,是不是? 通過返回數值列表來處理錯誤信息 目前,在本地語言裡面處理錯誤的方式主要有兩種:直接返回代碼或者拋異常。這兩種都不是最理想的處理方式。其中返回代碼是非常令人沮喪的,因為返回的錯誤代碼經常與從函數中返回的數據相衝突。Go允許函數返回多個值來解決這個問題。這個從函數裡面返回的值,可以用來檢查定義的類型是否正確並且可以隨時隨地對函數的返回值進行檢查。如果你對錯誤值不關心,你可以不必檢查。在這兩種情況下,常規的返回值都是可用的。 簡化的成分(優先於繼承) 通過使用介面,類型是有資格成為對象中一員的,就像Java指定行為一樣。例如在標準庫裡面的IO包,定義一個Writer來指定一個方法,一個Writer函數,其中輸入參數是位元組數組並且返回整數類型值或者錯誤類型。任何類型實現一個帶有相同簽名的Writer方法是對IO的完全實現,Writer介面。這種是解耦代碼而不是優雅。它還簡化了模擬對象來進行單元測試。例如你想在資料庫對象中測試一個方法,在標準語言中,你通常需要創建一個資料庫對象,並且需要進行大量的初始化和協議來模擬對象。在Go裡面,如果該方法需要實現一個介面,你可以創建任何對該介面有用的對象,所以,你創建了MockDatabase,這是很小的對象,只實現了幾個需要運行和模擬的介面——沒有構造函數,沒有附件功能,只是一些方法。 簡化的並發性 相對於其他語言,並發性在Go裡面顯得更加容易。把『go』關鍵字放在任意函數前面然後那個函數就會在其go-routine自動運行(一個很輕的線程)。go-routines是通過通道進行交流並且基本上封鎖了所有的隊列消息。普通工具對相互排斥是有用,但是Go通過使用通道來踢掉並發性任務和坐標更加容易。 優秀的錯誤消息 所有與Go相似的語言,自身作出的診斷都是無法與Go相媲美的。例如,一個死鎖程序,在Go運行時會通知你目前哪個線程導致了這種死鎖。編譯的錯誤信息是非常詳細全面和有用的。 其他 這裡還有許多其他吸引人的地方,下面就一概而過的介紹一下,比如高階函數、垃圾回收、哈希映射和可擴展的數組內置語言(部分語言語法,而不是作為一個庫)等等。 當然,Go並不是完美無瑕。在工具方面還有些不成熟的地方和用戶社區較小等,但是隨著谷歌語言的不斷發展,肯定會有整治措施出來。儘管許多語言,尤其是D、Rust和Vala旨在簡化C++並且對其進行簡化,但它們給人的感覺仍是「C++看上去要更好」。

【Go語言的優勢】

可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了。

靜態類型語言,但是有動態語言的感覺,靜態類型的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高。

語言層面支持並發,這個就是Go最大的特色,天生的支持並發,我曾經說過一句話,天生的基因和整容是有區別的,大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢?Go就是基因裡面支持的並發,可以充分的利用多核,很容易的使用並發。

內置runtime,支持垃圾回收,這屬於動態語言的特性之一吧,雖然目前來說GC不算完美,但是足以應付我們所能遇到的大多數情況,特別是Go1.1之後的GC。

簡單易學,Go語言的作者都有C的基因,那麼Go自然而然就有了C的基因,那麼Go關鍵字是25個,但是表達能力很強大,幾乎支持大多數你在其他語言見過的特性:繼承、重載、對象等。

豐富的標準庫,Go目前已經內置了大量的庫,特別是網路庫非常強大,我最愛的也是這部分。

內置強大的工具,Go語言裡面內置了很多工具鏈,最好的應該是gofmt工具,自動化格式化代碼,能夠讓團隊review變得如此的簡單,代碼格式一模一樣,想不一樣都很困難。

跨編譯,如果你寫的Go代碼不包含cgo,那麼就可以做到window系統編譯linux的應用,如何做到的呢?Go引用了plan9的代碼,這就是不依賴系統的信息。

內嵌C支持,前面說了作者是C的作者,所以Go裡面也可以直接包含c代碼,利用現有的豐富的C庫。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279476.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-20 15:04
下一篇 2024-12-20 15:04

相關推薦

  • 運維Python和GO應用實踐指南

    本文將從多個角度詳細闡述運維Python和GO的實際應用,包括監控、管理、自動化、部署、持續集成等方面。 一、監控 運維中的監控是保證系統穩定性的重要手段。Python和GO都有強…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟體開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • go-chassis

    本文將深入探究go-chassis,包括它的基本概念,特性,以及如何使用它構建微服務應用程序。 一、微服務架構及其優勢 微服務架構是一種將應用程序拆分為小型、自治服務的體系結構。每…

    編程 2025-04-29
  • 使用Golang創建黑色背景圖片的方法

    本文將從多個方面介紹使用Golang創建黑色背景圖片的方法。 一、安裝必要的代碼庫和工具 在開始創建黑色背景圖片之前,我們需要先安裝必要的代碼庫和工具: go get -u git…

    編程 2025-04-29
  • 使用Go-Redis獲取Redis集群內存使用率

    本文旨在介紹如何使用Go-Redis獲取Redis集群的內存使用率。 一、Go-Redis簡介 Go-Redis是一個用於連接Redis伺服器的Golang客戶端。它支持Redis…

    編程 2025-04-28
  • Kong 使用第三方的go插件

    本文將針對Kong使用第三方的go插件進行詳細闡述。首先,我們解答下標題的問題:如何使用第三方的go插件?我們可以通過編寫插件來達到此目的。 一、插件架構介紹 Kong的插件系統采…

    編程 2025-04-28
  • Go中struct的初始化

    本文將從多個方面詳細闡述Go中struct的初始化方式,包括使用字面量初始化、使用new函數初始化以及使用構造函數等。通過本文的介紹,讀者能夠更深入的了解Go中struct的初始化…

    編程 2025-04-28
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27
  • Python社區免費版安裝教程

    本文將詳細介紹Python社區免費版的安裝方法及流程,並給出對應代碼示例。 一、下載Python社區免費版 首先打開Python官網 https://www.python.org/…

    編程 2025-04-27
  • Go語言爬蟲對比Python

    在代碼執行效率和應用場景上,Go語言和Python都有各自的優勢。Go語言致力於高效、高並發的網路應用開發,而Python則具有強大的數據挖掘、機器學習和科學計算能力。最近,隨著G…

    編程 2025-04-27

發表回復

登錄後才能評論