免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

2021go語言現狀 go語言發展前景 知乎

2021-05-12 GO 與C#代碼行對比

最近在做一個內網穿透工具,是用C# Dotnet Core寫的。 總擔心性能不行,想參考下別人寫的。 結果搜到很多GO語言的例子。 看了下Go語言的介紹,覺得確實是比較簡單的語言。并且在并發上比較方便。于是,就開始學習Go語言,并用Go把內網穿透工具重新寫了一下。

創新互聯建站專注于芙蓉企業網站建設,成都響應式網站建設公司,商城建設。芙蓉網站建設公司,為芙蓉等地區提供建站服務。全流程按需定制,專業設計,全程項目跟蹤,創新互聯建站專業和態度為您提供的服務

然后,又想用Go語言重寫之前的DotnetCore的WebAPI,現在還在編寫中,只是對比下兩個語言差異。

然后看下 C#

實際上目前我也沒有能力判斷GO和C#哪個更好

go語言有前景嗎?

就目前來看還是很有前景,因為越來越火了,不過他的應用領域還是局限在高并發處理和網站開發,畢竟是后起之秀所以在其他桌面程序領域沒那么容易普及和超越c++,找工作就不推薦學go

如何看待go語言泛型的最新設計?

Go 由于不支持泛型而臭名昭著,但最近,泛型已接近成為現實。Go 團隊實施了一個看起來比較穩定的設計草案,并且正以源到源翻譯器原型的形式獲得關注。本文講述的是泛型的最新設計,以及如何自己嘗試泛型。

例子

FIFO Stack

假設你要創建一個先進先出堆棧。沒有泛型,你可能會這樣實現:

type?Stack?[]interface{}func?(s?Stack)?Peek()?interface{}?{

return?s[len(s)-1]

}

func?(s?*Stack)?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack)?Push(value?interface{})?{

*s?=?

append(*s,?value)

}

但是,這里存在一個問題:每當你 Peek 項時,都必須使用類型斷言將其從 interface{} 轉換為你需要的類型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發錯誤。比如忘記 * 怎么辦?或者如果您輸入錯誤的類型怎么辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會發現到自己的錯誤,直到它影響到你的整個服務為止。

通常,使用 interface{} 是相對危險的。使用更多受限制的類型總是更安全,因為可以在編譯時而不是運行時發現問題。

泛型通過允許類型具有類型參數來解決此問題:

type?Stack(type?T)?[]Tfunc?(s?Stack(T))?Peek()?T?{

return?s[len(s)-1]

}

func?(s?*Stack(T))?Pop()?{

*s?=?(*s)[:

len(*s)-1]

}

func?(s?*Stack(T))?Push(value?T)?{

*s?=?

append(*s,?value)

}

這會向 Stack 添加一個類型參數,從而完全不需要 interface{}。現在,當你使用 Peek() 時,返回的值已經是原始類型,并且沒有機會返回錯誤的值類型。這種方式更安全,更容易使用。(譯注:就是看起來更丑陋,^-^)

此外,泛型代碼通常更易于編譯器優化,從而獲得更好的性能(以二進制大小為代價)。如果我們對上面的非泛型代碼和泛型代碼進行基準測試,我們可以看到區別:

type?MyObject?struct?{

X?

int

}

var?sink?MyObjectfunc?BenchmarkGo1(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek().(MyObject)

}

}

func?BenchmarkGo2(b?*testing.B)?{

for?i?:=?0;?i??b.N;?i++?{

var?s?Stack(MyObject)

s.Push(MyObject{})

s.Push(MyObject{})

s.Pop()

sink?=?s.Peek()

}

}

結果:

BenchmarkGo1BenchmarkGo1-16?????12837528?????????87.0?ns/op???????48?B/op????????2?allocs/opBenchmarkGo2BenchmarkGo2-16?????28406479?????????41.9?ns/op???????24?B/op????????2?allocs/op

在這種情況下,我們分配更少的內存,同時泛型的速度是非泛型的兩倍。

合約(Contracts)

上面的堆棧示例適用于任何類型。但是,在許多情況下,你需要編寫僅適用于具有某些特征的類型的代碼。例如,你可能希望堆棧要求類型實現 String() 函數

Java崗位現在飽和了嗎?現在學習就業還能好嗎?

Java崗位現在沒有飽和,2021年的就業也是持續上漲。主要是因為:

一、Java語言特性強大

軟件是電子載體的靈魂,也是游戲開發、網頁開發等的核心技術,因此學完Java開發后可以從事的是這些行業的關鍵性崗位。從過往數據來看,Java有83次榮獲TIOBE排行榜第一位。Java語言尤其受大型企業青睞,在一些高并發、高流量的平臺中使用Java語言開發優勢顯著、穩定性好,在服務器端Java更是發揮了它本身高性能、安全穩健的特性,由此Java在程序開發領域地位不容撼動。

二、Java工程師起薪高,缺口大

從第三方平臺統計的數據可以看到,Java工程師在2020年平均月薪接近20K,其中20K-30K的薪資占比為30.3%。崗位需求方面,從100offer招聘網發布的2019年各技術類崗位企業面邀數占比可以看出,Java工程師企業需求為第一位,占比60%,同比2018年增長了11%。由此可見,2020年Java崗位需求仍然呈現持續上升趨勢,供不應求。

三、Java崗位多、就業好、發展空間大

軟件人才不但是核心人才,而且是通用人才,走到哪都不怕,所以哪個行業發展快,就可以去哪個行業,更大限度提高人才的價值而降低職業風險。很多人都說軟件工程師的職業生涯短,其實這是一個誤解。Java軟件工程師是通用性人才,其不受行業發展的限制,而且也不受年齡和體力的影響,和醫生、律師一樣,年紀越大,經驗越豐富,也就越值錢。

分享標題:2021go語言現狀 go語言發展前景 知乎
分享鏈接:http://m.newbst.com/article18/dogpggp.html

成都網站建設公司_創新互聯,為您提供標簽優化網站營銷做網站服務器托管App開發虛擬主機

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司