成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go語(yǔ)言酷的一些東西

開(kāi)發(fā) 后端
Go是一種相對(duì)較新的語(yǔ)言,由Google的Robert Griesemer,Rob Pike和Ken Thompson于2009年之前創(chuàng)建。它是開(kāi)源的,因此任何人都可以為此做出貢獻(xiàn)并提出新功能。

介紹

Go是一種相對(duì)較新的語(yǔ)言,由Google的Robert Griesemer,Rob Pike和Ken Thompson于2009年之前創(chuàng)建。它是開(kāi)源的,因此任何人都可以為此做出貢獻(xiàn)并提出新功能。

替代C ++似乎主要是為了使Google的軟件工程師的工作更輕松。 它針對(duì)系統(tǒng)編程,例如云系統(tǒng),分布式系統(tǒng)和微服務(wù)。

一些特點(diǎn)

Go是靜態(tài)類型的。 所有變量都需要使用給定類型聲明。 bool,string和" number"(int,uint,float64,complex128等)類型是基本類型。 然后,也可以聲明結(jié)構(gòu)(就像在C中一樣)。 這對(duì)于在編譯時(shí)檢測(cè)錯(cuò)誤很有幫助。 哦,順便說(shuō)一句,Go是一種編譯語(yǔ)言。

Go代碼編譯非常快! 這是創(chuàng)建者試圖改進(jìn)的有關(guān)C和C ++的關(guān)鍵方面之一,他們做到了! 此外,由于代碼直接編譯為機(jī)器代碼,因此執(zhí)行時(shí)間非常快。 這也使可執(zhí)行文件高度可移植到具有相同平臺(tái)的其他計(jì)算機(jī)上。

Go有接口。 對(duì)于面向?qū)ο蟮某绦騿T,這可能有點(diǎn)令人失望,但是Go沒(méi)有類。 它不支持繼承。 但是,它確實(shí)支持結(jié)構(gòu)的創(chuàng)建以及為它們的方法的定義。 此外,它支持接口的定義,該接口支持松散耦合的系統(tǒng)。 還有一件很酷的事情是,您可以定義一個(gè)空接口(interface {}),然后將聲明一個(gè)通用對(duì)象!

Go專注于處理錯(cuò)誤。 Go不支持例外。 它的哲學(xué)是函數(shù)必須返回返回值(或多個(gè)值,因?yàn)樗梢酝瑫r(shí)返回多個(gè)變量)和錯(cuò)誤值。 這使開(kāi)發(fā)人員可以考慮發(fā)生故障時(shí)該怎么辦。 但是,還有一些與例外類似的東西,即"恐慌"和"恢復(fù)"機(jī)制。

去有垃圾收集。 這是對(duì)C和C ++的重大改進(jìn)。 它是一種非常有效的語(yǔ)言,它增加了大多數(shù)最近使用的語(yǔ)言所具有的非常有用的功能。

Go支持內(nèi)置并發(fā)。 到目前為止,這是Go語(yǔ)言最酷的功能! 它非常有效且易于使用。 我們將在下一節(jié)中詳細(xì)說(shuō)明。

Go中的并發(fā)

首先,讓我們區(qū)分并發(fā)和并行。 并發(fā)是關(guān)于同時(shí)但不一定同時(shí)執(zhí)行的獨(dú)立進(jìn)程。 并行意味著執(zhí)行是同時(shí)的。 因此,并行化只能通過(guò)多個(gè)內(nèi)核來(lái)實(shí)現(xiàn),而并發(fā)只能通過(guò)正確調(diào)度不同的進(jìn)程在一個(gè)內(nèi)核上完成。 Go實(shí)現(xiàn)了非常高效的并發(fā)性,并且還支持并行性。

人們認(rèn)為Go遵循參與者模型的并發(fā)性。 在此模型中,參與者是計(jì)算的原始單位。 接收消息并根據(jù)消息進(jìn)行某種計(jì)算的東西。 他們獲得輸入,執(zhí)行操作并提供輸出。 Go中的演員是goroutines。

角色完全相互隔離。 這意味著它們不共享內(nèi)存,而是通過(guò)其他結(jié)構(gòu)進(jìn)行通信,從而為它們提供同步。 Go為此實(shí)現(xiàn)了渠道。 即使可以通過(guò)不同的goroutine來(lái)使用共享內(nèi)存結(jié)構(gòu),使用通道也可以使并發(fā)真正容易且安全。

最好的部分是goroutines非常輕巧。 Go計(jì)劃在系統(tǒng)線程上執(zhí)行g(shù)oroutine,從而允許多個(gè)goroutine在單個(gè)OS線程上同時(shí)運(yùn)行。 這樣做的好處是減少了例程的堆棧(與OS線程的1MB相比,減少了4KB),并節(jié)省了OS線程之間的上下文切換成本,這比在goroutine之間切換要大得多。 我們甚至可以以非常低的成本同時(shí)運(yùn)行數(shù)十萬(wàn)個(gè)goroutine!

我們還提到過(guò),在go中使用并發(fā)很容易。 讓我們看一個(gè)例子!

  1. package main 
  2. import “fmt”func add_string(string_to_add string, input_ch chan string, output_ch chan string) { 
  3.   fmt.Println(“Running: add_string”)  result_string :<-input_ch + string_to_add  output_ch <- result_string}func initialize_string(initial_string string, input_ch chan string) { 
  4.   fmt.Println(“Running: initialize_string”)  input_ch <- initial_string}func main() { 
  5.   input_ch :make(chan string) 
  6.   output_ch :make(chan string) 
  7.   go add_string(“Hello World!”, input_ch, output_ch) 
  8.   go initialize_string(“”, input_ch) 
  9.   fmt.Println(“Waiting for goroutines”) 
  10.   fmt.Println(<-output_ch)} 

運(yùn)行此代碼后,輸出為:

  1. Waiting for goroutines 
  2. Running: initialize_string 
  3. Running: add_string 
  4. Hello World! 

因此,在這里我們看到運(yùn)行并發(fā)的go例程有多么容易。 只需定義一個(gè)函數(shù)并在調(diào)用它之前添加" go"即可。 就這么簡(jiǎn)單! 這將安排goroutine,但調(diào)用者函數(shù)的執(zhí)行將繼續(xù)。 在這種情況下,我們調(diào)用該函數(shù)以添加" Hello World!"。 第一。 然后是初始化函數(shù),然后我們打印消息" Waiting for goroutines",但控制臺(tái)顯示了不同的打印消息順序。 為什么?

如前所述,為了同步goroutine,我們可以使用通道。 我們首先創(chuàng)建一個(gè)輸入通道和一個(gè)輸出通道,然后以以下方式使用它們。 add_string函數(shù)將等待,直到輸入通道中有內(nèi)容為止。 然后我們調(diào)用該函數(shù)以空字符串初始化輸入通道。 但是,主函數(shù)繼續(xù)執(zhí)行并顯示" Waiting for goroutines"。 然后,它等待輸出通道中包含某些內(nèi)容。 這將允許初始化函數(shù)將空字符串放入輸入通道。 add_string函數(shù)將喚醒并添加" Hello World!"。 到輸出通道,然后主功能將再次喚醒并最終打印完整的消息。 容易吧?

Go在哪里使用?

Go用于開(kāi)發(fā)許多您可能知道的解決方案,例如Google,YouTube,Soundcloud,Docker等。但是,在Worldsensing中使我們開(kāi)始了解Go的一種是Chirpstack。 這是一個(gè)開(kāi)源的LoRaWAN網(wǎng)絡(luò)服務(wù)器堆棧。 它提供了一個(gè)用于設(shè)備管理的Web界面,并提供了許多方法來(lái)集成其他應(yīng)用程序,例如API,MQTT隊(duì)列等。它具有模塊化的體系結(jié)構(gòu),如您所見(jiàn)。

Go語(yǔ)言最酷的一些東西

Chirpstack是可配置的,并且易于部署。 您甚至可以找到帶有docker-compose.yml文件的開(kāi)源項(xiàng)目,該文件可以輕松啟動(dòng)所有內(nèi)容!

如您所見(jiàn),Go等出色的語(yǔ)言使開(kāi)發(fā)人員可以創(chuàng)建出色的項(xiàng)目。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2013-01-06 10:12:32

Web前端Web異步文件上傳

2021-02-20 17:16:39

Go語(yǔ)言Go開(kāi)發(fā)者編程

2021-03-27 00:00:01

軟件開(kāi)發(fā)語(yǔ)言

2013-07-24 09:32:13

Android項(xiàng)目

2024-02-26 00:00:00

Gomapslice

2021-07-05 05:34:10

Typescript語(yǔ)言開(kāi)發(fā)

2021-09-27 10:04:03

Go程序處理

2021-09-27 15:33:48

Go 開(kāi)發(fā)技術(shù)

2014-12-26 09:56:50

編程語(yǔ)言

2014-03-19 15:41:21

編程語(yǔ)言編程規(guī)則

2018-03-15 09:23:24

編程語(yǔ)言程序員Java

2009-06-18 14:54:52

Spring AOP

2009-09-21 17:46:25

Hibernate數(shù)據(jù)

2011-06-01 16:50:21

JAVA

2013-07-02 09:43:02

編程策略

2013-07-02 10:18:20

編程編程策略

2016-11-16 21:18:42

android日志

2009-06-25 09:50:32

JSF

2020-02-03 16:03:36

疫情思考

2010-09-28 14:14:19

SQL語(yǔ)句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人在线视频一区 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 国产不卡一区 | aa级毛片毛片免费观看久 | 91热在线 | 亚洲免费一区二区 | 午夜欧美一区二区三区在线播放 | 日韩免费视频一区二区 | 色综合桃花网 | 日本黄色短片 | 国产一区不卡 | 欧美一级特黄aaa大片在线观看 | 在线观看国产www | 人人色视频 | 国产精品一区久久久 | 久久国产精品99久久久久久丝袜 | 日韩欧美一区二区三区 | 久久国产精品-国产精品 | 国产91中文| 在线视频一区二区三区 | 国产视频精品视频 | 韩国av电影网 | 在线观看中文字幕视频 | 在线高清免费观看视频 | 精品国产不卡一区二区三区 | 人妖videosex高潮另类 | 亚洲日韩中文字幕一区 | 色综合一区二区三区 | 中文在线一区二区 | 日韩在线中文 | 国产精品一区在线 | 国产精品一区二区三区久久久 | 精品中文视频 | 亚洲精品www | 中文字幕一区二区三区精彩视频 | 一区在线观看视频 | 99热精品在线观看 | 亚洲成人在线免费 | 日本高清视频在线播放 | 久久精品一区二区三区四区 | 成人特区|