# Map 官方介绍One of the most useful data structures in computer science is the hash table. Many hash table implementations exist with varying properties, but in general they offer fast lookups, adds, and
Path参数gofuncmain(){router:=gin.Default()//可以匹配/user/john,但是不能匹配/user/or/userrouter.GET("/user/:name",func(cgin.Context){name:=c.Param("name")c.String(.StatusOK,"Hello%s",name)})//可以匹配/user/john/和/
在之前结构体的章节里我们讲过结构体的使用,一般情况下,我们定义结构体每个字段都是由字段名字以及字段的类型构成,例如:gotypeBookstruct{NamestringTargetstringSpendint}23.1Tag的使用但这一章要讲的是在字段上增加一个属性,这个属性是用反引号括起来的一个字符串,我们称之为Tag(标签)。例如:GOtypePersonstruct{Namestringj
22.1reflect包Go语言提供了一种机制,能够在运行时更新变量和检查它们的值、调用它们的方法,而不需要在编译时就知道这些变量的具体类型。这种机制被称为反射。反射是把双刃剑,功能强大但代码可读性并不理想,若非必要并不推荐使用反射。在Go中reflect包实现了运行时反射。reflect包会帮助识别interface{}变量的底层具体类型和具体值。22.1.1reflect.Typereflec
21.1静态类型(statictype)静态类型就是变量声明时候的类型。例如:go//int是静态类型varnumberint//string也是静态类型varnamestring21.2动态类型(concretetype)动态类型是程序运行时系统才能看见的类型。例如:go//in的静态类型为interface{}varininterface{}//in的静态类型为interface{}动态类型为
Go语言拥有头等函数(FirstclassFunction),头等函数是指函数可以被当作变量一样使用,即函数可以被当作参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量。20.1把函数赋值给变量下面是一个把函数赋值给变量的例子,该函数没有名称,调用该函数的唯一方法就是使用赋值后的变量。gopackagemainimport"fmt"funcmain(){bookFunc:=fu
内置函数new分配内存。该函数只接受一个参数,该参数是一个任意类型(包括自定义类型),而不是值,返回指向该类型新分配零值的指针。go//Thenewbuiltinfunctionallocatesmemory.Thefirstargumentisatype,//notavalue,andthevaluereturnedisapointertoanewly//allocatedzerovalueof
select语句用在多个发送/接收通道操作中进行选择。select语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个通道操作准备完毕,select会随机地选取其中之一执行。select语法如下:goselect{caseexpression1:codecaseexpression2:codedefault:code}下面是使用selectcase的一个简单例子:gopackagemainimp
通道(channel),就是一个管道,可以想像成Go协程之间通信的管道。它是一种队列式的数据结构,遵循先入先出的规则。15.1通道的声明每个通道都只能传递一种数据类型的数据,在你声明的时候,我们要指定通道的类型。chanType表示Type类型的通道。通道的零值为nil。govarchannel_namechanchannel_types下面的语句声明了一个类型为string的通道nameChan
Go语言的协程(Groutine)是与其他函数或方法一起并发运行的工作方式。协程可以看作是轻量级线程。与线程相比,创建一个协程的成本很小。因此在Go应用中,常常会看到会有很多协程并发地运行。14.1启动一个go协程调用函数或者方法时,如果在前面加上关键字go,就可以让一个新的Go协程并发地运行。go//定义一个函数funcfunctionName(parameterList){code}//执行一
包(package)用于组织Go源代码,提供了更好的可重用性与可读性。Go语言有超过100个的标准包,可以用goliststdwcl命令查看标准包的具体数目,标准库为大多数的程序提供了必要的基础组件。10.1main包首先,我们先来看看main包,该包中包含一个main()函数,该函数是程序运行的入口。packagepackagename代码指定了某一源文件属于某一个包。它应该放在每一个源文件的第
函数是基于功能或逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数),有助于提高代码可读性和可维护性。由于Go语言是编译型语言,所以函数编写的顺序是无关紧要的。9.1函数的声明在Go语言中,函数声明语法如下:gofuncfunction_name(parameter_list)(result_list){//函数体}函数的声明使用func关键词,后面依次接fu
结构体(struct)是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。学过C或C的人都知道结构体,但在Go中,没有像C中的class类的概念,只有struct结构体的概念,所以也没有继承。8.1结构体的声明在Go语言中使用下面的语法是对结构体的声明。gotypestruct_namestruct{attribute_name1attribute_typeatt
4.1变量作用:给一段指定的内存空间起名,方便操作这段内存。声明变量的一般形式是使用var关键字。方法一:声明一个变量,默认的值是0gopackagemainimport"fmt"funcmain(){//方法一:声明一个变量,默认的值是0varaintfmt.Println("a=",a)fmt.Printf("a的类型是:%T\n",a)}方法二:声明一个变量,并初始化一个值gopackage
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号