Go语言基础讲解

合集下载

goc知识点

goc知识点

goc知识点Go是一种开源的编程语言,它的设计目标是提供一种简单、高效和可靠的方式来构建软件。

在Go中,有一些重要的知识点需要掌握,这些知识点涵盖了Go的核心概念和常用功能。

本文将介绍一些重要的Go知识点,帮助读者更好地了解和使用Go语言。

一、变量和基本类型在Go中,变量是用于存储数据的容器。

在声明变量时,需要指定变量的类型,并且可以选择性地为其赋初值。

Go提供了多种基本类型,包括整数、浮点数、布尔值和字符串等。

在使用这些基本类型时,需要注意其范围和精度,以免出现溢出或精度丢失的问题。

二、控制流程控制流程是编程中非常重要的一个概念,它决定了程序的执行顺序。

在Go中,可以使用条件语句(if-else)、循环语句(for、while)和跳转语句(break、continue)等来控制程序的流程。

掌握这些控制流程的使用方法,可以使程序更加灵活和高效。

三、函数和包函数是一段可重复使用的代码块,它接收输入参数并返回输出结果。

在Go中,函数是一等公民,可以作为参数传递给其他函数,也可以作为返回值返回给调用者。

函数可以用来封装代码逻辑,提高代码的可维护性和复用性。

同时,Go还提供了包的概念,用于组织和管理代码。

四、错误处理在编程中,错误是不可避免的。

在Go中,错误处理是一种重要的编程模式,它可以帮助我们更好地处理程序中可能出现的错误情况。

Go中的错误处理机制主要通过返回值来实现,当函数执行出错时,会返回一个错误值。

我们可以根据这个错误值来判断函数是否执行成功,进而采取相应的处理措施。

五、并发编程并发编程是Go语言的一大特点。

Go提供了轻量级的协程(goroutine)和通信机制(channel),用于实现并发编程。

通过使用goroutine,我们可以同时执行多个任务,提高程序的执行效率。

而通过使用channel,我们可以在不同的goroutine之间进行通信和数据共享,实现协作完成任务。

六、内存管理和垃圾回收内存管理是每个程序员必须面对的问题之一。

Go语言基础godoc命令用法及示例详解

Go语言基础godoc命令用法及示例详解

Go语⾔基础godoc命令⽤法及⽰例详解⽬录go doc⼀、使⽤go doc命令在终端查看go doc packagego doc package/subpackagego doc package function⼆、使⽤浏览器查看的⽅式go doc为我们提供了快速⽣成⽂档以及查看⽂档的⼯具,让我们可以很容易的编写查看⽂档⼀、使⽤go doc命令在终端查看go doc package获取包的⽂档注释例如:go doc fmt 会显⽰使⽤ godoc ⽣成的 fmt 包的⽂档注释。

go doc package/subpackage获取⼦包的⽂档注释例如:go doc container/listgo doc package function获取某个函数在某个包中的⽂档注释例如:go doc fmt Printf 会显⽰有关 fmt.Printf() 的使⽤说明。

注意:查看⾃定义的也是使⽤这些命令:1. 必须配置GOPATH2. ⾃定义的package必须src下⼆、使⽤浏览器查看的⽅式通过godoc命令可以在本机启动⼀个web服务,我们可以通过打开浏览器,访问这个服务来查看我们的Go⽂档。

godoc -http=<域名>:<端⼝号>⽐如godoc -http=localhost:8080。

然后在浏览器中打开127.0.0.1:8080,你将会看到⼀个的本地副本,通过它可查询pkg⽂档等其他内容。

关闭web服务关闭⿊窗⼝查看package:localhost:8080/pkg/以上就是Go语⾔基础go doc命令的⽤法及⽰例详解的详细内容,更多关于Go语⾔基础命令的资料请关注其它相关⽂章!。

go语言基础之map介绍和使用

go语言基础之map介绍和使用

go语⾔基础之map介绍和使⽤1、map介绍Go语⾔中的map(映射、字典)是⼀种内置的数据结构,它是⼀个⽆序的key—value对的集合,⽐如以⾝份证号作为唯⼀键来标识⼀个⼈的信息。

2、map⽰例map格式为:map[keyType]valueType在⼀个map⾥所有的键都是唯⼀的,⽽且必须是⽀持==和!=操作符的类型,切⽚、函数以及包含切⽚的结构类型这些类型由于具有引⽤语义,不能作为映射的键,使⽤这些类型会造成编译错误:dict := map[ []string ]int{} //err, invalid map key type []stringmap值可以是任意类型,没有限制。

map⾥所有键的数据类型必须是相同的,值也必须如何,但键和值的数据类型可以不相同。

注意:map是⽆序的,我们⽆法决定它的返回顺序,所以,每次打印结果的顺利有可能不同。

3、map的使⽤⽰例2:package main //必须有个main包import "fmt"func main() {//定义⼀个变量,类型为map[int]stringvar m1 map[int]stringfmt.Println("m1 = ", m1)//对于map只有len,没有capfmt.Println("len = ", len(m1))//可以通过make创建m2 := make(map[int]string)fmt.Println("m2 = ", m2)fmt.Println("len = ", len(m2))//可以通过make创建,可以指定长度,只是指定了容量,但是⾥⾯却是⼀个数据也没有m3 := make(map[int]string, 2) //指定容量为2(0 1 2),会⾃动扩冲m3[1] = "mike" //元素的操作m3[2] = "go"m3[3] = "c++"fmt.Println("m3 = ", m3)fmt.Println("len = ", len(m3))//常⽤⽅法,推荐使⽤//初始化//键值是唯⼀的m4 := map[int]string{1: "mike", 2: "go", 3: "c++"}fmt.Println("m4 = ", m4)}执⾏结果:m1 = map[]len = 0m2 = map[]len = 0m3 = map[1:mike 2:go 3:c++ 4:python]len = 4//常⽤⽅法,推荐使⽤m4 = map[1:mike 2:go 3:c++] 。

golang 核心知识点

golang 核心知识点

golang 核心知识点Golang 核心知识点:Golang(又称为Go)是一种开源的编程语言,由Google开发,并于2009年首次发布。

它的设计目标是通过简化语法和高效的并发处理来提高开发者的生产力。

以下是一些 Golang 的核心知识点:1. 并发编程:Golang 内置了轻量级的 Goroutine 和通道(Channel)来实现并发编程。

Goroutine 是一种轻量级的线程,可以在并发执行的情况下节省资源。

通过使用通道,Goroutine 可以安全地在不同的线程之间进行通信和同步。

2. 内存管理:Golang 的内存管理是通过自动垃圾回收来实现的。

开发者不需要手动分配和释放内存,垃圾回收器会自动管理内存的分配和释放,从而避免了内存泄漏和悬挂指针等问题。

3. 包管理:Golang 使用包(Package)作为项目组织的基本单元。

每个源代码文件都属于一个包,并且可以通过 import 关键字引入其他包。

Golang 的包管理机制可以帮助开发者模块化和组织代码,同时也方便了代码的复用和维护。

4. 并发安全:Golang 在语言级别提供了并发安全的机制。

通过使用互斥锁(Mutex)和读写锁(RWMutex),开发者可以确保在多个 Goroutine 之间对共享资源的安全访问,避免竞态条件和数据竞争。

5. 接口抽象:Golang 提供了接口(Interface)的机制,使得开发者可以通过定义接口来实现多态性。

接口定义了一组方法的规范,任何类型只要实现了接口中定义的方法,即可被视为该接口的实现。

6. 并发模型:Golang 使用了 CSP(Communicating Sequential Processes)并发模型。

该模型通过 Goroutine 之间的通信来实现并发,并且可以通过通道实现同步和数据传递。

Golang 的并发模型允许开发者轻松地编写高效的并发程序,而无需过多关注底层细节。

这些是 Golang 的一些核心知识点,通过深入学习和实际应用,开发者可以更好地掌握和利用 Golang 来构建高效、可靠的应用程序。

go 入门指南 pdf

go 入门指南 pdf

go 入门指南 pdf在学习和掌握编程语言方面,选择一本好的入门指南是非常重要的。

对于初学者来说,GO 语言是一个很好的选择。

本文将介绍《GO 入门指南》这本书,并为大家提供该书的 PDF 版下载。

1. 书籍介绍《GO 入门指南》是一本旨在帮助初学者迅速学习 GO 语言的实用指南。

该书从基础概念讲起,循序渐进地引导读者了解该编程语言的主要特性和用法。

它全面覆盖了 GO 语言的语法、标准库、并发编程等重要主题,并通过丰富的实例和练习帮助读者提升编程技能。

2. 关于 GO 语言GO 语言是一种现代化的静态类型编程语言,由 Google 公司开发。

它具有简单、高效、可靠、并发编程能力强等特点,被广泛应用于开发高性能和可伸缩性要求较高的后端服务。

GO 语言还拥有强大的标准库,提供了丰富的工具和包,使得开发者能够快速构建稳定可靠的应用程序。

3. 学习 GO 语言的重要性学习 GO 语言对于想要从事后端开发或希望提升编程技能的人来说非常重要。

GO 语言简洁的语法和丰富的标准库使得开发变得更加高效,而其并发编程能力使得处理大规模并发请求成为可能。

此外,GO 语言还具有良好的可读性和可维护性,使得团队开发成为一件轻松的事情。

4. 《GO 入门指南》的特点《GO 入门指南》这本书以其独特的特点吸引了众多初学者:4.1 简明扼要:该书以简洁明了的语言和实用的例子讲解 GO 语言的各个方面,帮助读者尽快理解关键概念。

4.2 渐进式学习:书中的知识点按照递进的方式组织,让读者一步步地掌握 GO 语言的基础知识和高级特性。

4.3 实践导向:书中提供了大量的实例和练习,帮助读者巩固所学知识,并能够将其应用于实际项目开发中。

4.4 全面覆盖:《GO 入门指南》几乎涵盖了 GO 语言的方方面面,从语法基础到并发编程,再到网络编程和数据库操作等多个重要主题。

5. 《GO 入门指南》PDF 版下载为了方便读者学习,我们为您提供了《GO 入门指南》的 PDF 版下载。

Go语言基础gobuild命令用法及示例详解

Go语言基础gobuild命令用法及示例详解

Go语⾔基础gobuild命令⽤法及⽰例详解⽬录go build⼀个Go项⽬在GOPATH下,会有如下三个⽬录使⽤:注意:go build1. ⽤于测试编译多个包或⼀个main包2. build命令编译包丢弃⾮main包编译结果,只是检查是否能够被编译3. 保留main包编译结果⼀个Go项⽬在GOPATH下,会有如下三个⽬录bin存放编译后的可执⾏⽂件pkg存放编译后的包⽂件src存放项⽬源⽂件⼀般,bin和pkg⽬录可以不创建,go命令会⾃动创建(如 go install),只需要创建src⽬录即可。

使⽤:add.gopackage cal// 两个数相加⾸字母⼤写,表⽰public ⽅法func Add(a,b int)int{return a+b}subtraction.gopackage cal// 两个数相减⾸字母⼤写,表⽰public ⽅法func Subtraction(a,b int) int {return a-b}main.gopackage mainimport ("fmt""cal" //到⼊⾃定义的包,cal必须在src⽂件下,必须和main同⼀级)func main() {fmt.Println("hello word")fmt.Println("相加",cal.Add(10,20))fmt.Println("相减",cal.Subtraction(40,50))}1. 普通包【⾮main包】go build add.go 【编译add.go,不⽣成exe执⾏⽂件】go build -o add.exe add.go 【指定⽣成exe执⾏⽂件,但是不能运⾏此⽂件,不是main包】2. main包【package main】go build main.go 【⽣成exe执⾏⽂件】go build -o main.exe main.go 【指定⽣成main.exe执⾏⽂件】3. 项⽬⽂件夹下有多个⽂件进⼊⽂件的⽬录go build 【默认编译当前⽬录下的所有go⽂件】go build add.go subtraction.go 【编译add.go 和 subtraction.go】注意:1. 如果是普通包,当你执⾏go build之后,它不会产⽣任何⽂件。

go 入门指南 pdf

go 入门指南pdfGo语言入门指南旨在帮助初学者快速掌握Go语言的基本知识、技能和实践方法。

本文将从Go语言的简介、特点、安装与环境配置,以及基础语法等方面进行讲解,同时分析Go语言在实际项目中的应用和性能优化,最后探讨Go语言的未来发展与趋势。

1.Go语言简介与背景Go语言,又称Golang,是由Google公司开发的一门开源编程语言。

自2007年诞生以来,Go语言凭借其高性能、简洁语法和广泛的应用场景,在全球范围内受到了越来越多开发者的喜爱。

Go语言的的设计理念强调简洁、高效,旨在解决大型软件项目的开发、编译和运行速度问题。

2.Go语言的特点与优势Go语言具有以下几个显著特点:(1)静态类型:Go语言采用静态类型系统,有助于提前发现错误,提高代码质量。

(2)并发支持:Go语言原生支持并发编程,通过goroutine和channel 实现简单高效的多线程。

(3)垃圾回收:Go语言具有自动内存管理功能,降低内存泄漏风险,提高程序稳定性。

(4)高性能:Go语言编译为单一的可执行文件,无需额外依赖库,运行速度快。

(5)跨平台:Go语言支持多种操作系统和处理器架构,可轻松实现跨平台开发。

3.Go语言的安装与环境配置在开始学习Go语言之前,首先需要安装Go语言环境。

请参照官方文档进行安装和环境配置。

需要注意的是,Go语言版本管理严格,不同版本之间存在不兼容性,建议使用最新稳定版进行学习。

4.Go语言基础语法本部分将简要介绍Go语言的基本语法,包括变量、数据类型、控制结构、函数、数组和指针等。

通过学习这些基础知识,可以为后续的编程实践打下坚实基础。

5.Go语言常用库与框架Go语言拥有丰富的第三方库和框架,可以帮助开发者更快地实现各种功能。

本部分将介绍一些常用的库和框架,如:网络编程、数据库操作、Web开发等。

6.Go语言编程实践与案例分析本部分将通过实际案例,讲解如何运用Go语言进行编程实践。

案例可能包括:网络编程、微服务架构、并发编程等。

go基础教程

go基础教程Go(也称为Golang)是一种开源编程语言,由Google开发,用于构建快速、高效且可靠的软件。

它结合了静态类型语言的安全性和动态类型语言的灵活性,并提供了一些特性,使得编写代码更加简单和直观。

本教程将介绍Go的基础知识,帮助初学者了解这门语言的核心概念和语法。

第一部分:概述1. Go的历史和背景:介绍Go语言的发展历史及其背后的动机。

2. Go的特性:讨论Go的主要特性,如静态编译、垃圾回收、并发等。

3. 安装Go:提供安装Go语言所需的步骤和指导。

第二部分:基本语法1. Hello, World!:展示第一个Go程序,并解释其结构和语法。

2. 基本语法:包括变量、常量、数据类型、运算符和控制流程等。

3. 函数:介绍函数的定义、调用和传递参数等。

4. 包和导入:讨论Go中的包的概念以及如何导入已有的包。

5. 错误处理:讲解Go中的错误处理机制和使用方法。

第三部分:高级概念1. 结构体:介绍Go中的结构体类型以及如何使用。

2. 方法:解释如何在Go中定义和使用方法。

3. 接口:讨论接口的概念和实现,并展示如何使用接口进行多态编程。

4. 并发编程:介绍Go中并发编程的特性和原语,如goroutines和channels。

5. 包管理和测试:讲解如何使用Go的包管理工具和进行单元测试。

第四部分:实践项目1. 一个简单的命令行应用程序:演示如何使用Go编写一个基本的命令行程序。

2. RESTful API服务器:展示如何使用Go构建一个简单的RESTful API服务器。

3. Web应用程序:介绍如何使用Go构建一个基本的Web应用程序。

第五部分:进阶主题1. 代码优化和性能:提供一些优化代码和提高性能的技巧。

2. 并发模式和最佳实践:讨论一些常见的并发模式和最佳实践。

3. 包发布和版本管理:讲解如何发布Go代码和管理版本。

本教程试图提供一个全面而易于理解的Go基础教程,但仅仅涵盖了该语言的基本概念和语法。

go语言教学白皮书

go语言教学白皮书Go语言是由Google开发的一种编程语言,其设计目标是使得程序具有高效性和易于管理性,特别适合于高并发性和大规模分布式系统的构建。

近年来,Go语言的应用领域越来越广泛,越来越多的开发者也开始了解和学习这门语言。

本篇文章将带您了解如何有效地教授Go语言,同时介绍一些值得关注的教学方法和资源。

一、Go语言教学的必备条件1. 熟悉Go语言的基础知识在进行Go语言的教学之前,教师需要确保自己对该语言有一定的掌握程度,掌握其基础语法、标准库、并发机制等基本知识。

这不仅能够帮助教师更加清晰地传授相关知识,还能够帮助教师更好地理解学生在学习过程中所遇到的问题和难点。

2. 明确教学目标和学生群体教师需要明确围绕什么样的教学目标来进行教学,以及适合哪些学生群体。

Go语言的适用领域广泛,对于初学者来说可以围绕其语法、数据类型、程序控制流、函数等基础知识进行教学,对于有一定基础的学生可以进行CPU与内存优化的相关教学。

3. 提供合适的教学资源提供合适的教学资源对于学生的学习过程至关重要。

教师需要为学生提供清晰明了的教学PPT、示例代码、教程、学习笔记等资源。

学生也应该自己寻找和从不同来源处获取学习资源,以便更深入、全面地学习Go语言。

二、Go语言教学的教学方法1. 针对不同学生提供差异化的学习体验针对不同学生提供差异化的学习体验是教学中的重要一环。

对于初学者,可以通过一些实际例子和图片等形式给予直观的讲解,对于有一定基础的学生可以引导其进行实战练习,例如让学生自己编写一些简单的程序等。

2. 培养学生独立思考和问题解决的能力在教学过程中,教师可以适当“引导”而非“指导”学生的学习,鼓励学生自主探索解决问题的方法,从而提高学生的独立思考和问题解决的能力。

同时,在学生遇到问题无法解决时,教师也应该及时给予帮助和指导。

3. 实战操作和案例分析“实战”是学习编程语言最好的方法,通过让学生编写实际的代码和程序可以更好地帮助学生理解其作用和用法。

go语言基础之随机数的使用

go语⾔基础之随机数的使⽤1、随机数的使⽤⽰例1:如果种⼦参数⼀样,每次运⾏程序产⽣的随机数都⼀样package main //必须有个main包import "fmt"import "math/rand"func main() {//设置种⼦,只需⼀次//如果种⼦参数⼀样,每次运⾏程序产⽣的随机数都⼀样rand.Seed(666)for i := 0; i < 5; i++ {//产⽣随机数fmt.Println("rand = ", rand.Int())}}执⾏结果:产⽣的随机数,每次结果都⼀样。

rand = 4343637058903381868rand = 3769183255805726892rand = 1923662109321608638rand = 1818688891928401469rand = 4144162958715305555⽰例2:以当前时间做为参数,每次程序运⾏的随机数都会不⼀样package main //必须有个main包import "fmt"import "math/rand"import "time"func main() {//设置种⼦,只需⼀次//如果种⼦参数⼀样,每次运⾏程序产⽣的随机数都⼀样rand.Seed(time.Now().UnixNano()) //以当前系统时间作为种⼦参数for i := 0; i < 5; i++ {//产⽣随机数//fmt.Println("rand = ", rand.Int()) //随机很⼤的数fmt.Println("rand = ", rand.Intn(100)) //限制在100内的数}}执⾏结果:rand = 84rand = 3rand = 43rand = 35rand = 13。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Go语言讲解Go语言介绍:Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。

并发性:。

Go语言为此专门创造出了一个关键字“go”。

使用这个关键字,我们就可以很容易的使一个函数被并发的执行垃圾回收:编程者不用考虑内存的泄露或者野指针的事情,因为GO语言会对内存进行管理。

Go的主要特点有哪些?类型安全和内存安全以非常直观和极低代价的方案实现高并发高效的垃圾回收机制快速编译(同时解决C语言中头文件太多的问题)为多核计算机提供性能提升的方案可以指定cpu核数UTF-8编码支持可以支持多种字符格式Go语言编写规则:Go内置25个关键字(均为小写)break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var注释方法同C语言// :单行注释/* */:多行注释Go程序的一般结构:命名方式:basic_structure.goGo程序是通过package 来组织的(与python类似)只有package 名称为main 的包可以包含main 函数一个可执行程序有且仅有一个main 包通过import 关键字来导入其它非main 包通过const 关键字来进行常量的定义通过在函数体外部使用var 关键字来进行全局变量的声明与赋值通过type 关键字来进行结构(struct)或接口(interface)的声明通过func 关键字来进行函数的声明Go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用:根据约定,函数名首字母小写即为private函数名首字母大写即为publicGo语言基本类型部分:布尔型:bool- 长度:1字节- 取值范围:true, false- 注意事项:不可以用数字代表true或false整型:int/uint- 根据运行平台可能为32或64位8位整型:int8/uint8- 长度:1字节- 取值范围:-128~127/0~255字节型:byte(uint8别名)16位整型:int16/uint16- 长度:2字节- 取值范围:-32768~32767/0~6553532位整型:int32(rune)/uint32- 长度:4字节- 取值范围:-2^32/2~2^32/2-1/0~2^32-164位整型:int64/uint64- 长度:8字节- 取值范围:-2^64/2~2^64/2-1/0~2^64-1浮点型:float32/float64- 长度:4/8字节- 小数位:精确到7/15小数位复数:complex64/complex128- 长度:8/16字节足够保存指针的32 位或64 位整数型:uintptr其它值类型:- array、struct、string引用类型:- slice、map、chan接口类型:inteface函数类型:func变量的声明和赋值形式:变量的声明格式:var <变量名称><变量类型>变量的赋值格式:<变量名称> = <表达式>声明的同时赋值:var <变量名称> [变量类型] = <表达式>第一种:主要用于全局变量的使用中第二种:此种定义方式,用于变量进行运算的时候,所得到的结果也许会和变量的类型不一样,系统可以自行推断结果变量的类型,所以这也是很方便的。

第三种:设置变量时,你已经有一个初始值时,就可以用这种方式。

常量的定义常量的值在编译时就已经确定常量的定义格式与变量基本相同等号右侧必须是常量或者常量表达式常量表达式中的函数必须是内置函数运算符Go中的运算符均是从左至右结合优先级(从高到低)^ ! (一元运算符)* / % <<>>&&^+ - | ^ (二元运算符)== != <<= >= ><- (专门用于channel)&&||指针Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针目标对象的成员操作符”&”取变量地址,使用”*”通过指针间接访问目标对象默认值为nil 而非NULL循环语句forGo只有for一个循环语句关键字,但支持3种形式初始化和步进表达式可以是多个值条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替左大括号必须和条件语句在同一行选择语句switch可以使用任何类型或表达式作为条件语句不需要写break,一旦条件符合自动终止如希望继续执行下一个case,需使用fallthrough语句支持一个初始化表达式(可以是并行方式),右侧需跟分号左大括号必须和条件语句在同一行切片SliceGo 语言切片是对数组的抽象。

Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

创建切片:var slice1 []type =make([]type,len)也可以简写为slice1 :=make([]type,len)也可以指定切片的容量make([]T,length,capacity)切片的初始化s :=[]int{1,2,3}切片截取s1 :=s[startIndex:endIndex]将s中从下标startIndex到endIndex-1 下的元素创建为一个新的切片示例:package mainimport"fmt"func main(){/* 创建切片*/numbers :=[]int{0,1,2,3,4,5,6,7,8}printSlice(numbers)/* 打印原始切片*/fmt.Println("numbers ==",numbers)/* 打印子切片从索引1(包含) 到索引4(不包含)*/fmt.Println("numbers[1:4] ==",numbers[1:4])/* 默认下限为0*/fmt.Println("numbers[:3] ==",numbers[:3])/* 默认上限为len(s)*/fmt.Println("numbers[4:] ==",numbers[4:])numbers1 :=make([]int,0,5)printSlice(numbers1)/* 打印子切片从索引0(包含) 到索引2(不包含) */ number2 :=numbers[:2]printSlice(number2)/* 打印子切片从索引2(包含) 到索引5(不包含) */ number3 :=numbers[2:5]printSlice(number3)}func printSlice(x []int){fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)} 以上代码的执行结果:len=9cap=9slice=[012345678]numbers ==[012345678]numbers[1:4]==[123]numbers[:3]==[012]numbers[4:]==[45678]len=0cap=5slice=[]len=2cap=9slice=[01]len=3cap=7slice=[234]Append()和copy()函数如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。

下面的代码描述了从拷贝切片的copy 方法和向切片追加新元素的append 方法。

Go 语言Map(集合)Map 是一种无序的键值对的集合。

Map 最重要的一点是通过key 来快速检索数据,key 类似于索引,指向数据的值。

Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。

不过,Map 是无序的,我们无法决定它的返回顺序,这是因为Map 是使用hash 表来实现的。

定义Map可以使用内建函数make 也可以使用map 关键字来定义Map:/* 声明变量,默认map 是nil */var map_variable map[key_data_type]value_data_type/* 使用make 函数*/map_variable =make(map[key_data_type]value_data_type)示例package mainimport"fmt"func main(){var countryCapitalMap map[string]string/* 创建集合*/countryCapitalMap =make(map[string]string)/* map 插入key-value 对,各个国家对应的首都*/countryCapitalMap["France"]="Paris"countryCapitalMap["Italy"]="Rome"countryCapitalMap["Japan"]="Tokyo"countryCapitalMap["India"]="New Delhi"/* 使用key 输出map 值*/for country :=range countryCapitalMap {fmt.Println("Capital of",country,"is",countryCapitalMap[country])}/*range 关键字用于for循环中迭代数组(array)、切片(slice)、链表(channel)或集合(map)的元素。

在数组和切片中它返回元素的索引值,在集合中返回key-value 对的key 值。

相关文档
最新文档