go语言1.3,go语言10

GO语言(三十):访问关系型数据库(上)

本教程介绍了使用 Godatabase/sql及其标准库中的包访问关系数据库的基础知识。

为企业提供网站制作、成都网站建设、网站优化、全网整合营销推广、竞价托管、品牌运营等营销获客服务。创新互联公司拥有网络营销运营团队,以丰富的互联网营销经验助力企业精准获客,真正落地解决中小企业营销获客难题,做到“让获客更简单”。自创立至今,成功用技术实力解决了企业“网站建设、网络品牌塑造、网络营销”三大难题,同时降低了营销成本,提高了有效客户转化率,获得了众多企业客户的高度认可!

您将使用的database/sql包包括用于连接数据库、执行事务、取消正在进行的操作等的类型和函数。

在本教程中,您将创建一个数据库,然后编写代码来访问该数据库。您的示例项目将是有关老式爵士乐唱片的数据存储库。

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

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

在 Linux 或 Mac 上:

在 Windows 上:

2、在命令提示符下,为您的代码创建一个名为 data-access 的目录。

3、创建一个模块,您可以在其中管理将在本教程中添加的依赖项。

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

此命令创建一个 go.mod 文件,您添加的依赖项将在其中列出以供跟踪。

注意: 在实际开发中,您会指定一个更符合您自己需求的模块路径。有关更多信息,请参阅一下文章。

GO语言(二十五):管理依赖项(上)

GO语言(二十六):管理依赖项(中)

GO语言(二十七):管理依赖项(下)

接下来,您将创建一个数据库。

在此步骤中,您将创建要使用的数据库。您将使用 DBMS 本身的 CLI 创建数据库和表,以及添加数据。

您将创建一个数据库,其中包含有关黑胶唱片上的老式爵士乐录音的数据。

这里的代码使用MySQL CLI,但大多数 DBMS 都有自己的 CLI,具有类似的功能。

1、打开一个新的命令提示符。

在命令行,登录到您的 DBMS,如下面的 MySQL 示例所示。

2、在mysql命令提示符下,创建一个数据库。

3、切到您刚刚创建的数据库,以便您可以添加表。

4、在文本编辑器的 data-access 文件夹中,创建一个名为 create-tables.sql 的文件来保存用于添加表的 SQL 脚本。

将以下 SQL 代码粘贴到文件中,然后保存文件。

在此 SQL 代码中:

(1)删除名为album表。 首先执行此命令可以让您更轻松地稍后重新运行脚本。

(2)创建一个album包含四列的表:title、artist和price。每行的id值由 DBMS 自动创建。

(3)添加带有值的四行。

5、在mysql命令提示符下,运行您刚刚创建的脚本。

您将使用以下形式的source命令:

6、在 DBMS 命令提示符处,使用SELECT语句来验证您是否已成功创建包含数据的表。

接下来,您将编写一些 Go 代码进行连接,以便进行查询。

现在你已经有了一个包含一些数据的数据库,开始你的 Go 代码。

找到并导入一个数据库驱动程序,该驱动程序会将您通过database/sql包中的函数发出的请求转换为数据库可以理解的请求。

1、在您的浏览器中,访问SQLDrivers wiki 页面以识别您可以使用的驱动程序。

2、使用页面上的列表来识别您将使用的驱动程序。为了在本教程中访问 MySQL,您将使用 Go-MySQL-Driver。

3、请注意驱动程序的包名称 - 此处为github.com/go-sql-driver/mysql.

4、使用您的文本编辑器,创建一个用于编写 Go 代码的文件,并将该文件作为 main.go 保存在您之前创建的数据访问目录中。

5、进入main.go,粘贴以下代码导入驱动包。

在此代码中:

(1)将您的代码添加到main包中,以便您可以独立执行它。

(2)导入 MySQL 驱动程序github.com/go-sql-driver/mysql。

导入驱动程序后,您将开始编写代码以访问数据库。

现在编写一些 Go 代码,让您使用数据库句柄访问数据库。

您将使用指向结构的指针sql.DB,它表示对特定数据库的访问。

编写代码

1、进入 main.go,在import您刚刚添加的代码下方,粘贴以下 Go 代码以创建数据库句柄。

在此代码中:

(3)使用 MySQL 驱动程序Config和FormatDSN类型以收集连接属性并将它们格式化为连接字符串的 DSN。

该Config结构使代码比连接字符串更容易阅读。

(4)调用sql.Open 初始化db变量,传递 FormatDSN。

(5)检查来自 的错误sql.Open。例如,如果您的数据库连接细节格式不正确,它可能会失败。

为了简化代码,您调用log.Fatal结束执行并将错误打印到控制台。在生产代码中,您会希望以更优雅的方式处理错误。

(6)调用DB.Ping以确认连接到数据库有效。在运行时, sql.Open可能不会立即连接,具体取决于驱动程序。您在Ping此处使用以确认 database/sql包可以在需要时连接。

(7)检查来自Ping的错误,以防连接失败。

(8)Ping如果连接成功,则打印一条消息。

文件的顶部现在应该如下所示:

3、保存 main.go。

1、开始跟踪 MySQL 驱动程序模块作为依赖项。

使用go get 添加 github.com/go-sql-driver/mysql 模块作为您自己模块的依赖项。使用点参数表示“获取当前目录中代码的依赖项”。

2、在命令提示符下,设置Go 程序使用的DBUSER和DBPASS环境变量。

在 Linux 或 Mac 上:

在 Windows 上:

3、在包含 main.go 的目录中的命令行中,通过键入go run来运行代码。

连接成功了!

接下来,您将查询一些数据。

go是啥 语言.

GO语言由Google公司开发,并于2009年开源,对比Java、Python、C等语言,GO尤其擅长并发编程,性能堪比C语言,开发效率比肩Python,被誉为21世纪的C语言。GO语言在云计算、大数据、微服务、高并发领域,应用非常广泛。BAT大厂正在把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语言的结构体

作为C语言家族的一员,go和c一样也支持结构体。可以类比于java的一个POJO。

在学习定义结构体之前,先学习下定义一个新类型。

新类型 T1 是基于 Go 原生类型 int 定义的新自定义类型,而新类型 T2 则是 基于刚刚定义的类型 T1,定义的新类型。

这里要引入一个底层类型的概念。

如果一个新类型是基于某个 Go 原生类型定义的, 那么我们就叫 Go 原生类型为新类型的底层类型

在上面的例子中,int就是T1的底层类型。

但是T1不是T2的底层类型,只有原生类型才可以作为底层类型,所以T2的底层类型还是int

底层类型是很重要的,因为对两个变量进行显式的类型转换,只有底层类型相同的变量间才能相互转换。底层类型是判断两个类型本质上是否相同的根本。

这种类型定义方式通常用在 项目的渐进式重构,还有对已有包的二次封装方面

类型别名表示新类型和原类型完全等价,实际上就是同一种类型。只不过名字不同而已。

一般我们都是定义一个有名的结构体。

字段名的大小写决定了字段是否包外可用。只有大写的字段可以被包外引用。

还有一个点提一下

如果换行来写

Age: 66,后面这个都好不能省略

还有一个点,观察e3的赋值

new返回的是一个指针。然后指针可以直接点号赋值。这说明go默认进行了取值操作

e3.Age 等价于 (*e3).Age

如上定义了一个空的结构体Empty。打印了元素e的内存大小是0。

有什么用呢?

基于空结构体类型内存零开销这样的特性,我们在日常 Go 开发中会经常使用空 结构体类型元素,作为一种“事件”信息进行 Goroutine 之间的通信

这种以空结构体为元素类建立的 channel,是目前能实现的、内存占用最小的 Goroutine 间通信方式。

这种形式需要说的是几个语法糖。

语法糖1:

对于结构体字段,可以省略字段名,只写结构体名。默认字段名就是结构体名

这种方式称为 嵌入字段

语法糖2:

如果是以嵌入字段形式写的结构体

可以省略嵌入的Reader字段,而直接访问ReaderName

此时book是一个各个属性全是对应类型零值的一个实例。不是nil。这种情况在Go中称为零值可用。不像java会导致npe

结构体定义时可以在字段后面追加标签说明。

tag的格式为反单引号

tag的作用是可以使用[反射]来检视字段的标签信息。

具体的作用还要看使用的场景。

比如这里的tag是为了帮助 encoding/json 标准包在解析对象时可以利用的规则。比如omitempty表示该字段没有值就不打印出来。


分享文章:go语言1.3,go语言10
当前网址:http://myzitong.com/article/hdshgc.html