golang特性理解

Go语言是Google发布的开源编程语言,在高并发场景具有较好的表现。许多备受推崇的技术,诸如docker、Kubernetes、etcd都是使用go语言开发。以下是作者对go语言的几个特性的简单理解:

  • 自动垃圾回收:大家都知道C语言的性能较高,一方面是因为C语言比较底层,并且编译后运行。而另一方面是因为C语言没有自动垃圾回收机制,没有垃圾回收带来的损耗。这样的代价是程序员对内存使用上的极度谨慎,因为一不小心就可能导致内存泄漏。Go语言作为一门新生的开发语言,没有忽略内存管理这个问题,和Java一样都具有自动垃圾回收功能。
  • 丰富的内置类型:go具有丰富的内置类型,例如数组切片,类似Java里的ArrayList。在Java中ArrayList经常被使用,那么为什么不把这个类型作为内置类型呢,这样使用的时候就不需要import了,Go语言在这点上简化了我们的机械劳动。
  • 函数多返回值:诸如C语言、Java等其他一些高级语言是不支持多个函数返回值的,但是这个是一个很常用的需求。Java可以通过把多个返回值封装到一个对象或者通过map等类型来实现,但是还是太麻烦了。这种函数多返回值的设计很棒。
  • 错误处理:在Java等传统语言上都提供了错误处理功能。通常使用try{}catch()实现。Go语言则引入了三个关键字,分别是defer、panic和recover。其中使用defer关键字语句的含义是不管程序是否出现异常,均在函数退出时自动执行相关代码。和Java中的finally功能差不多,但是使用更加简便,只要一个关键字就能完成。
  • 匿名函数和闭包:这个功能在Java中也有,在使用的时候使得代码更加简洁。Go语言还能够把函数赋值给某个变量,这是一个比较有用的功能。这个功能在许多第三方库都得到了体现。举个例子,在cron表达式应用中,我们需要定时执行一系列操作,但是cron表达式的解析执行我们肯定不用自己造轮子,我们采用别人写的第三方库。在使用的时候,我们首先把自己的代码写成一个方法,然后把方法传给cron第三方库,这样就能定时实现我们自己的代码逻辑

图中funcJob是我们自己的业务逻辑代码,s.Cron.AddFunc()把我们的代码和我们的要执行的cron表达式关联起来,并使用cron的第三方框架帮我们执行。试想如果Go语言没有函数复制给变量的机制,那么这个功能要实现就要麻烦很多。

  • 类型和接口:Go中没有Java中继承和重载的概念,对象的继承方式以另一种组合的方式实现,举个例子,在Java中继承的方式如下:

Class A {

public class funcA() {

}

}

Class B extents A {

}

而Go实现方式

type A struct {

}

func (a *A) FuncA() {
}

type B struct {‘

A

}

我们就可以使用A.FuncA()和B.A.FuncA()来调用A里面的FuncA 方法。

  •  并发编程:这个特性是Go语言最吸引我的一个地方。Go语言引入了goroutine概念,它使得并发编程变得非常简单。并且goroutine是一种比线程更加轻盈、更省资源的协程。通过使用goroutine以及消息传递来共享内存而不是使用共享内存来通信,使得并发编程更加轻盈和安全。使用goroutine时,直接在函数调用前使用关键字go就可以了。

  • 反射:大多数高级语言都有反射机制,Java、C#,当然也包括Go语言。通常情况下我们所运行的程序都是在编译期就已经知道程序的内部结构。而反射机制是在编译的时候并不确定那个类被加载了,只有在运行的时候才加载、探知、自审。举个例子,两个团队A,B分模块共同开发一个系统,其中团队A用到了团队B的代码,但是团队B还没开发完。这时候通过反射机制团队A依然能够在团队B代码不完整的情况下完成自己代码的编译。

大家如果有问题欢迎在文章下面留言,或者关注我们的微信公众号“三神Tec美学编程“和我们一起讨论

 

“golang特性理解”的6,008个回复

  1. [url=https://dapoxetine911.com/]dapoxetine generic uk[/url] [url=https://cipro100.com/]cipro online uk[/url] [url=https://propecia50.com/]propecia canada[/url] [url=https://cafergot2019.com/]cafergot tablet[/url] [url=https://viagra500.com/]canadian pharmacy viagra[/url] [url=https://zithromax2.com/]zithromax online canada[/url] [url=https://wellbutrin365.com/]wellbutrin order online[/url] [url=https://synthroid100.com/]synthroid medication cost[/url] [url=https://robaxin100.com/]robaxin 500 mg[/url] [url=https://prednisolone100.com/]buy prednisolone 5mg online[/url] [url=https://tadacip1.com/]tadacip online uk[/url] [url=https://proscar100.com/]proscar online buy[/url] [url=https://hydrochlorothiazide2.com/]hydrochlorothiazide 25 mg pill[/url] [url=https://xenical365.com/]pharmacy xenical[/url] [url=https://celebrex2019.com/]celebrex 200mg capsules price[/url] [url=https://furosemide24.com/]where to buy furosemide 80 mg[/url] [url=https://prednisone3.com/]buy prednisone online[/url] [url=https://trazodone2019.com/]trazodone 50 mg[/url] [url=https://azithromycin24.com/]azithromycin 500 tablet price[/url] [url=https://clomid2.com/]where can you buy clomid over the counter[/url]

  2. [url=http://fluoxetine365.com/]fluoxetine 20mg[/url] [url=http://prednisolone100.com/]buy prednisolone[/url] [url=http://suhagra911.com/]suhagra 100mg online india[/url] [url=http://prednisone3.com/]buy prednisone[/url] [url=http://tadacip1.com/]tadacip india[/url] [url=http://cafergot2019.com/]cafergot tablets in india[/url] [url=http://viagra500.com/]viagra 15 mg[/url] [url=http://clomid2.com/]where can i buy clomid[/url] [url=http://tadalafil200.com/]tadalafil generic[/url] [url=http://levitra100.com/]levitra coupon[/url]

  3. [url=https://amoxicillin24.com/]amoxicillin 875mg 125mg[/url] [url=https://fluoxetine365.com/]fluoxetine 20mg[/url] [url=https://wellbutrin365.com/]wellbutrin 200[/url] [url=https://doxycycline2019.com/]can i buy doxycycline over the counter[/url] [url=https://tadacip1.com/]online tadacip[/url] [url=https://hydrochlorothiazide2.com/]hydrochlorothiazide 12.5 mg[/url] [url=https://sildenafil48.com/]sildenafil 25 mg buy online[/url] [url=https://clomid2.com/]where to buy clomid australia[/url] [url=https://levitra100.com/]levitra generic[/url] [url=https://robaxin100.com/]buy robaxin without prescription with visa[/url] [url=https://viagra500.com/]buy online viagra tablets in india[/url] [url=https://tadalafil200.com/]tadalafil cost[/url] [url=https://tadalafil7.com/]tadalafil[/url] [url=https://cafergot2019.com/]cafergot 1 100 mg[/url] [url=https://dapoxetine911.com/]buy dapoxetine pills[/url] [url=https://synthroid100.com/]synthroid 100 mcg[/url] [url=https://propecia50.com/]buy propecia[/url] [url=https://retina2.com/]generic retin a[/url] [url=https://metformin100.com/]metformin 500mg[/url] [url=https://nolvadex2019.com/]best nolvadex[/url]

  4. [url=https://tadalafil200.com/]canada tadalafil generic[/url] [url=https://wellbutrin365.com/]wellbutrin 75 mg[/url] [url=https://furosemide24.com/]lasix furosemide[/url] [url=https://propecia50.com/]propecia 2016[/url] [url=https://metformin100.com/]buy metformin online no prescription[/url] [url=https://cialis911.com/]otc generic cialis[/url] [url=https://hydrochlorothiazide2.com/]hydrochlorothiazide brand australia[/url] [url=https://clomid2.com/]buy clomid online with paypal[/url] [url=https://synthroid100.com/]buy synthroid cheap[/url] [url=https://fluoxetine365.com/]fluoxetine medicine in india[/url]

  5. [url=https://viagra500.com/]canadian pharmacy viagra[/url] [url=https://tadalafil200.com/]tadalafil 5mg daily use[/url] [url=https://xenical365.com/]xenical price[/url] [url=https://prednisone3.com/]buy prednisone[/url] [url=https://metformin100.com/]metformin 500 mg tablet price[/url] [url=https://proscar100.com/]proscar best price[/url] [url=https://celebrex2019.com/]celebrex price usa[/url] [url=https://cialis911.com/]order cialis online[/url] [url=https://amoxicillin24.com/]875 mg amoxicillin cost[/url] [url=https://wellbutrin365.com/]wellbutrin over the counter[/url]

  6. [url=http://fluoxetine365.com/]fluoxetine for sale online[/url] [url=http://suhagra911.com/]suhagra 100mg[/url] [url=http://xenical365.com/]xenical tablet price[/url] [url=http://cipro100.com/]buy generic cipro[/url] [url=http://propecia50.com/]propecia cost[/url] [url=http://prednisone3.com/]brand name prednisone[/url] [url=http://tadalafil7.com/]tadalafil cost[/url] [url=http://wellbutrin365.com/]wellbutrin 200 mg[/url] [url=http://amoxicillin24.com/]amoxicillin 250mg[/url] [url=http://azithromycin24.com/]azithromycin 500mg[/url]

  7. [url=https://trazodone2019.com/]buy trazodone uk[/url] [url=https://fluoxetine365.com/]fluoxetine 20mg[/url] [url=https://nolvadex2019.com/]nolvadex 40mg price in india[/url] [url=https://cafergot2019.com/]where can i buy cafergot[/url] [url=https://tretinoin2019.com/]tretinoin 0.025 cream[/url]

发表评论

电子邮件地址不会被公开。 必填项已用*标注