7 GO语言优势
#编程 #braziliandevs #go

首先

首先,我将供认£

我第一次看到一条路时,我发现语言很奇怪而无私。

  • 您如何没有尝试/捕捉?
  • 你为什么所有这些不同的语法?
  • 为什么没有“每种”语言具有的功能xyz?

这些是我问自己的一些问题。
在我决定第二次机会学习并决定学习的几年后。

入口,首先,有一个建议:我什至没有专注于我什至没有做的愚蠢细节。
语言比bonita语法要多得多。

很可能在旅途中与您习惯的方式不同,因此没有稀缺。

介绍

Go是一种由Google开发人员创建的语言,并于2009年推出了药丸。

语言天生专注于简单,稳定性和生产力,旨在开发复杂且长期存在的应用程序。

在本文中,我们将详细了解我认为最重要的语言的观点。

tonpicos:

  1. 可屈服性
  2. 汇编和可移植性
  3. concorróncia
  4. 丰富的标准库
  5. 简单
  6. 本地性能谱图福特拉龙
  7. 本地证词

1.可逆转

Image description

Go在2012年推出了版本稳定的1.0,并承诺新版本1.x.y是返回的。
换句话说,这意味着使用1.0经文在2012年编写的一种方法将在2023年使用Versatage 1.20.5进行编译和运行。

Google和许多其他公司在其内部项目中测试GO的清单,以确保该语言保持兼容,并且没有任何破坏。这样做的优点是,如果一个数百万生产线和测试的项目尚未破坏,那么较小的项目将破坏。

是非常改进的。

一部分在某些情况下可以违反兼容性的承诺,例如:

  • 安全故障校正
  • 语言中的错误校正

和其他一些可观的场景。

语言的落后最重要的是让我们发展长期存在的国家,而不必不断纠正和适应新语言更改的代码。

2.汇编和便携性

Gopher compilando código

在GO的正式实施中,该课程是为可以执行的所有操作的可执行人员编译的,这减少了头痛的rie。

GO编译并优化了构建时间的时间,因此程序不会使用内存或CPU优化其在执行时间的提示,与Python,Java,JavaScript DO,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java,Java, Java php等。

一个重要的细节是,在Go中也可以将其编译到其他架构中。这意味着您在ARM处理器中的Linux上可以编译您的代码以在Windows 64位上运行。
看起来似乎不是这样,但是在C中,这样做并不是很琐碎。

GO程序的交叉编译示例:

GOOS=windows GOARCH=386 go build main.go # windows 32 bits
GOOS=linux GOARCH=arm go build main.go # linux arm

3.竞争

Image description

go具有类似于threads的Goroutines,它的打火机和由运行时管理 do。

go将葫芦分发给CPU的数量,这使得可以并行处理事物,并且还可以大量使用I/O assíncrono,这在应用程序中可以大量使用I// I/ I/ I// o,作为Web应用程序。

语言还具有频道(频道),这是通信和同步gourthines的强大工具。
频道是我用uma série de 5 artigos专用于它们的语言的一种非常重要的舌头。

4.丰富的标准图书馆

Image description

go带有一个非常丰富的包装库,您可以在应用程序中使用。
这些只是几个例子:

  • io:处理阅读,写作等。字节
  • os:处理OS(文件,Env,Process等)
  • time:获得,转换和格式化时间
  • testing:用于自动测试,包括基准和模糊
  • crypto:用于算法和恒定加密
  • net:处理TCP,UDP,DNS
  • net/http:适用于客户和服务器http 1和2
  • html/template:模板引擎para html

5.简单

Image description

当有人听到某人说“ C©非常简单的语言”时,很多人感到害怕。
但是,当某人说“ c©simple”并不意味着在c©Molleza中编程,而是语言本身更简约,它没有多种不同的方法可以做同一件事,没有出色的行为,等等。

一些如何应用于GO的一些示例:

  1. 理想情况下是一种做某事的方法
  2. 或相当于“建筑商” E“驱逐舰”Sé£或Exploites
  3. 语言只有25个保留单词(vs vs of Java,95 C ++)
  4. 规格有大约100页(java的+800,+1800,来自C ++)
  5. stdlib在不需要时防止抽象和间接使用

注意:Java和C ++仅用于比较目的

一种简单的语言的优势在于,您将自己奉献的时间更少,学习语言本身,而更多的时间发展和学习更重要的概念。

6.本地性能分析工具

Image description

我没有将这个Tâpic作为第一个,因为大多数解决方案在大多数情况下都具有“足够好”的性能,并且优化通常非常准时。

por,当它的应用程序每天都有百万个通常的端点时,这种语言几乎没有内存,并且每秒管理数千个请求是一个差异。

go具有一个本机工具来衡量纪念用途,CPU,Gourthines等,使您可以根据Trica而不是假设优化性能。

Image description

Image description

此外,由于Versatile 1.20,GO支持Profile-guided optimization (PGO),它将使用在绩效配置文件中获得的数据作为parano来优化编译时的代码。

7.本地测试工具

go随着自动测试,模糊和基准测试的本地支持。

通过自动测试,您可以验证您的方式始终是按预期的。

func TestFormatarNomeDeCartao(t *testing.T) {
    nome := "Zezinho da Silva Freitas Junior"
    esperado := "Zezinho da S F Junior"

    resultado := FormatarNomeDeCartao(nome)

    if resultado != esperado {
        t.Errorf("esperado: %s, obtido: %s", esperado, resultado)
    }
}

通过模糊测试,您可以使用初始值进行测试,在我们的示例中,该值将是一个名称,Fuzzer将开始创建此值的变体并使用它们调用其功能。

func FuzzFormatarNomeDeCartao(f *testing.F) {
    f.Add("Zezinho da Silva")
    f.Fuzz(func (t *testing.T, nome string) {
        resultado := FormatarNomeDeCartao(nome)

        if len(resultado) > len(nome) {
            t.Errorf("O nome abreviado '%s' está maior que o original '%s'", resultado, nome)
        }
    })
}

通过基准测试,您可以检查功能运行,使用内存,分配等的DIO的时间。

func BenchmarkFormatarNomeDeCartao(b *testing.B) {
    for i := 0; i < b.N; i++ {
        FormatarNomeDeCartao("Zezinho da Silva Freitas Junior")
    }
}