网站首页 > 文章中心 > 其它

go语言入门基本知识

作者:小编 更新时间:2023-09-30 18:27:31 浏览量:273人看过

GO语言(十五):泛型入门(下)-

在本节中,您将添加通用函数调用的修改版本,进行小的更改以简化调用代码.您将删除在这种情况下不需要的类型参数.

当 Go 编译器可以推断您要使用的类型时,您可以在调用代码中省略类型参数.编译器从函数参数的类型推断类型参数.

请注意,这并不总是可能的.例如,如果您需要调用没有参数的泛型函数,则需要在函数调用中包含类型参数.

在 main.go 中,在您已有的代码下方,粘贴以下代码.

在此代码中:

go语言入门基本知识-图1

(1)调用泛型函数,省略类型参数.

从包含 main.go 的目录中的命令行,运行代码.

此时此刻呢,您将通过将整数和浮点数的并集捕获到您可以重用的类型约束(例如从其他代码中)来进一步简化函数.

正如您将在本节中看到的,约束接口也可以引用特定类型.

①.、编写代码

b.在您已有的函数下方,粘贴以下通用 SumNumbers函数.

go语言入门基本知识-图2

c.在 main.go 中,在您已有的代码下方,粘贴以下代码.

(1)调用SumNumbers打印每个map的总和.

与上一节一样,在调用泛型函数时省略了类型参数(方括号中的类型名称).Go 编译器可以从其他参数推断类型参数.

做得很好!您刚刚学习了 Go 中的泛型.

Go语言基础语法(一)

本文介绍一些Go语言的基础语法.

先来看一个简单的go语言代码:

go语言的注释方法:

代码执行结果:

下面来进一步介绍go的基础语法.

go语言中格式化输出可以使用 fmt 和 log 这两个标准库,

常用方法:

示例代码:

执行结果:

更多格式化方法可以访问中的fmt包.

log包实现了简单的日志服务,也提供了一些格式化输出的方法.

下面来介绍一下go的数据类型

下表列出了go语言的数据类型:

int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值.

常量是在程序编译时就确定下来的值,程序运行时无法改变.

Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符.

算术运算符:

关系运算符:

逻辑运算符:

位运算符:

赋值运算符:

指针相关运算符:

下面介绍一下go语言中的if语句和switch语句.另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍.

if语法格式如下:

if ... else :

else if:

语法格式:

另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true.

下面介绍几种循环语句:

也可以通过标记退出循环:

--THE END--

GO语言(十六):模糊测试入门(上)

本教程介绍了 Go 中模糊测试的基础知识.通过模糊测试,随机数据会针对您的测试运行,以尝试找出漏洞或导致崩溃的输入.可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击.

在本教程中,您将为一个简单的函数编写一个模糊测试,运行 go 命令,并调试和修复代码中的问题.

首先,为您要编写的代码创建一个文件夹.

①.、打开命令提示符并切换到您的主目录.

在 Linux 或 Mac 上:

在 Windows 上:

运行go mod init命令,为其提供新代码的模块路径.

此时此刻呢,您将添加一些简单的代码来反转字符串,稍后我们将对其进行模糊测试.

在此步骤中,您将添加一个函数来反转字符串.

独立程序(与库相反)始终位于 package 中main.

此函数将接受string,使用byte进行循环 ,并在最后返回反转的字符串.

此函数将运行一些Reverse操作,然后将输出打印到命令行.这有助于查看运行中的代码,并可能有助于调试.

e.该main函数使用 fmt 包,所以呢您需要导入它.

第一行代码应如下所示:

可以看到原来的字符串,反转它的结果,然后再反转它的结果,就相当于原来的了.

现在代码正在运行,是时候测试它了.

在这一步中,您将为Reverse函数编写一个基本的单元测试.

b.将以下代码粘贴到 reverse_test.go 中.

这个简单的测试将断言列出的输入字符串将被正确反转.

使用运行单元测试go test

此时此刻呢,您将单元测试更改为模糊测试.

单元测试有局限性,即每个输入都必须由开发人员添加到测试中.模糊测试的一个好处是它可以为您的代码提供输入,并且可以识别您提出的测试用例没有达到的边缘用例.

在本节中,您将单元测试转换为模糊测试,这样您就可以用更少的工作生成更多的输入!

请注意,您可以将单元测试、基准测试和模糊测试保存在同一个 *_test.go 文件中,但对于本示例,您将单元测试转换为模糊测试.

Fuzzing 也有一些限制.在您的单元测试中,您可以预测Reverse函数的预期输出,并验证实际输出是否满足这些预期.

例如,在测试用例Reverse("Hello, world")中,单元测试将返回指定为"dlrow ,olleH".

模糊测试时,您无法预测预期输出,因为您无法控制输入.

但是,Reverse您可以在模糊测试中验证函数的一些属性.在这个模糊测试中检查的两个属性是:

(1)将字符串反转两次保留原始值

注意单元测试和模糊测试之间的语法差异:

随着单元测试转换为模糊测试,是时候再次运行测试了.

a.在不进行模糊测试的情况下运行模糊测试,以确保种子输入通过.

如果您在该文件中有其他测试,您也可以运行go test -run=FuzzReverse,并且您只想运行模糊测试.

b.运行FuzzReverse模糊测试,查看是否有任何随机生成的字符串输入会导致失败.这是使用go test新标志-fuzz执行的.

语料库文件的第一行表示编码版本.以下每一行代表构成语料库条目的每种类型的值.由于 fuzz target 只需要 1 个输入,所以呢版本之后只有 1 个值.

c.运行没有-fuzz标志的go test; 新的失败种子语料库条目将被使用:

由于我们的测试失败,是时候调试了.

如何学习GO语言?

Go语言也称 Golang,兼具效率、性能、安全、健壮等特性.这套Go语言教程(Golang教程)通俗易懂,深入浅出,既适合没有基础的读者快速入门,也适合工作多年的程序员查阅知识点.

Go 语言

这套教程在讲解一些知识点时,将 Go 语言和其他多种语言进行对比,让掌握其它编程语言的读者能迅速理解 Go 语言的特性.Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定.

Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持.Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程.

因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说.所以呢可以说Go语言是一门混合型的语言.

此外,很多重要的开源项目都是使用Go语言开发的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes.Go 是编译型语言,Go 使用编译器来编译代码.编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件.要创建并运行 Go 程序,程序员必须执行如下步骤.

保存文件;编译程序;运行编译得到的可执行文件.

这不同于 Python、Ruby 和 JavaScript 等语言,它们不包含编译步骤.Go 自带了编译器,所以呢无须单独安装编译器.

以上就是土嘎嘎小编为大家整理的go语言入门基本知识相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章