云原生系列Go语言篇-泛型Part 2

类型推导和泛型就像在使用:=时支持类型推导一样,在调用泛型函数时Go同样支持类型推导。可在上面对Map、Filter和Reduce调用中看出。有些场景无法进行类型推导(如类型参数仅用作返回值)。这时,必须指定所有的参数类型。下面的代码演示了无法进行类型推导的场景:type Integer inter...

云原生系列Go语言篇-泛型Part 1

“Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译器能够帮助验证代码是否正确,但有时会希望重用不同类...

Go语言核心编程 - 数据结构和算法

47 课时 |
1657 人已学 |
免费

Go语言核心编程 - 基础语法、数组、切片、Map

182 课时 |
2984 人已学 |
免费

Go语言核心编程 - 面向对象、文件、单元测试、反射、TCP编程

162 课时 |
1393 人已学 |
免费
开发者课程背景图
云原生系列Go语言篇-编写测试Part 1

云原生系列Go语言篇-编写测试Part 1

本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。Go中测试代码非常容易,没有理由不添加测试。本章中,读者将了解...

云原生系列Go语言篇-标准库Part 2

encoding/jsonREST API将JSON奉为服务之通信的标准方式,Go 的标准库内置对Go 数据类型与 JSON 之间进行转换的支持。marshaling一词表示从 Go 数据类型转为另一种编码,而unmarshaling表示转换为 Go 数据类型。使用结构体标签添加元数据假设我们正在构...

云原生系列Go语言篇-标准库Part 2

使用Go进行开发的最大优势之一是其标准库。与Python类似,Go也采取了“内置电池”的理念,提供了构建应用程序所需的许多工具。由于Go是一种相对较新的语言,它附带了一个专注于现代编程环境中遇到的问题的库。我们无法涵盖所有标准库包,所幸也不需要,因为有许多优秀的信息源可以了解标准库,比如官方文档。我...

云原生系列Go语言篇-并发 Part 2

云原生系列Go语言篇-并发 Part 2

并发实践和模式既然已经讲解了Go为并发所提供的基础工具,我们就来学习一些并发的最佳实践和模式吧。保持API无并发并发是一种实现细节,好的API设计应当尽可能隐藏实现细节。这样在修改代码时无需修改其调用方式。在实践中,这意味着永远不要在API的类型、函数及方法中暴露通道或互斥锁(我们会在何时用互斥锁替...

云原生系列Go语言篇-并发 Part 1

并发是一个计算机科学用语,将一个进程分割成独立组件并指明这些组件如何安全共享数据。大部分语言通过库提供并发,使用的是尝试通过获取锁操作执行系统级共享数据的线程。Go独树一帜。它的主要并发模块,很多认认为是Go的最著名的特性,基于CSP(通讯顺序过程)。它依据快速排序算法的发明人Tony Hoare在...

云原生系列Go语言篇-模块、包和导入 Part 2

云原生系列Go语言篇-模块、包和导入 Part 2

使用模块我们已经学习了如何在单个模块中使用包,接下来该学习如何集成第三方模块及其中的包。然后,我们会学习如何发布自己模块并添加版本,以及Go的中央服务:pkg.go.dev、模块代理和校验和(checksum)数据库。导入第三方代码我们已导入过标准库中的包,如fmt、errors、os和math。G...

云原生系列Go语言篇-模块、包和导入 Part 1

云原生系列Go语言篇-模块、包和导入 Part 1

大部分编程语言都有将代码组织到命名空间和库的系统,Go也不例外。在学习其它特性时我们看到了,Go对这些老思想引入了新方法。本章中,读者会学习到如何通过包和模块组织代码、如何导入、如何使用第三方库以及如何创建自有库。仓库、模块和包Go语言的库管理有三个基础概念:仓库、模块和包。所有开发者对仓库都很熟悉...

云原生系列Go语言篇-类型、方法和接口 Part 2

接口快速教程虽然Go并发(在并发一章讲解)是聚光灯下的宠儿,便Go设计中真正的明星是其隐式接口,也是Go中唯一的抽象类型。下面就来学习它的伟大之处。我们先快速学习如何声明接口。接口的内在很简单。和其它自定义类型一样,可以使用type关键字进行定义。以下是fmt包中Stringer接口的定义:type...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。