当前位置:
在前面我们讲了结构体(struct)和接口(interface),在里面也提到过方法,但没有详细介绍方法(Method)。在这一章里,我们来仔细看看方法有那些奇妙之处呢?20.1 方法的定义在 Go 语言中,结构体就像是类的一种简化形式,那么面向对象程序员可能会问:类的方法在哪里呢?在 Go 语言中有一个概念,它和方法有着同样的名字,并且大体上意思相近。Go 语言中方法和函数在形式上很像,它是作用...
2019-11-28 阅读:2040
19.1 接口是什么Go语言接口定义了一组方法集合,但是这些方法集合仅仅只是被定义,它们没有在接口中实现。接口(interface)类型是Go语言的一种数据类型。而因为所有的类型包括自定义类型都实现了空接口interface{},所以空接口interface{}可以被当做任意类型的数值。Go 语言中的所有类型包括自定义类型都实现了interface{}接口,这意味着所有的类型如string、 in...
2019-11-28 阅读:2140
18.1结构体(struct)Go 通过结构体的形式支持用户自定义类型,或者叫定制类型。Go 语言结构体是实现自定义类型的一种重要数据类型。结构体是复合类型(composite types),它由一系列属性组成,每个属性都有自己的类型和值的,结构体通过属性把数据聚集在一起。结构体类型和字段的命名遵循可见性规则。方法(Method)可以访问这些数据,就好像它们是这个独立实体的一部分。结构体是值类型,...
2019-11-28 阅读:2049
type关键字在Go语言中作用很重要,比如定义结构体,接口,还可以自定义类型,定义类型别名等。自定义类型由一组值以及作用于这些值的方法组成,类型一般有类型名称,往往从现有类型组合通过type关键字构造出一个新的类型。17.1 type 自定义类型在Go 语言中,基础类型有下面几种: bool byte complex64 complex128 error float32 float64 ...
2019-11-28 阅读:2244
16.1 函数介绍Go语言函数基本组成:关键字func、函数名、参数列表、返回值、函数体和返回语句。语法如下:func 函数名(参数列表) (返回值列表) { // 函数体return}除了main()、init()函数外,其它所有类型的函数都可以有参数与返回值。对于函数,一般也可以这么认为:"func" FunctionName Signature [ FunctionBody ] ."f...
2019-11-28 阅读:2088
正好最近用到了一些字符串,就总结了一下Golang中的字符串处理函数,主要是Golang中的strings包:Count(s string, str string) int:计算字符串str在s中的非重叠个数。如果str为空串则返回s中的字符(非字节)个数+1。Index(s string, str string) int :返回子串str在字符串s中第一次出现的位置。如果找不到则返回-1;如果s...
2019-11-28 阅读:2176
菜鸟的时候只知道时间戳有10位、13位、还有好长位数的。入坑久了才明白10位数的时间戳是以 秒 为单位;13位数的时间戳是以 毫秒 为单位;19位数的时间戳是以 纳秒 为单位;golang中可以这样写:package mainimport ( "time" "fmt")func main() { fmt.Printf("时间戳(秒):%v;\n", time.Now().Unix()) fmt.P...
2019-11-27 阅读:3093
通常你想要返回包含错误参数的更有信息量的字符串,例如:可以用 fmt.Errorf() 来实现:它和 fmt.Printf() 完全一样,接收有一个或多个格式占位符的格式化字符串和相应数量的占位变量。和打印信息不同的是它用信息生成错误对象。
2019-11-27 阅读:2124
for、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(Gofmt 会将后续代码自动移至下一行) (标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母) continue 语句指向 LABEL1,当执行到该语句的时候,就会跳转到 LABEL1 标签的位置。
2019-11-27 阅读:2127
map是一种元素对的无序集合,一组称为元素value,另一组为唯一键索引key。 未初始化map的值为nil。map 是引用类型
2019-11-27 阅读:2121
切片(slice) 是对底层数组一个连续片段的引用,所以切片是一个引用类型。切片提供对该数组中编号的元素序列的访问。未初始化切片的值为nil。 与数组一样,切片是可索引的并且具有长度。切片s的长度可以通过内置函数len() 获取;与数组不同,切片的长度可能在执行期间发生变化。元素可以通过整数索引0到len(s)-1来寻址。我们可以把切片看成是一个长度可变的数组。 切片提供了计算容量的函数 ca...
2019-11-27 阅读:1986
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。 数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。 注意事项:如果我们想让数组元素类型为任意类型的话可以使用空接口interface{}作为类型。当使用值时我们必须先...
2019-11-27 阅读:2081
Go 语言中可以使用反引号或者双引号来定义字符串。反引号表示原生的字符串,即不进行转义。 双引号:字符串使用双引号括起来,其中的相关的转义字符将被替换。
2019-11-27 阅读:2076
9.1 内置运算符算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符Go语言的算术运算符:运算符含义示意+相加A + B-相减A - B*相乘A * B/相除B / A 结果还是整数 8/3=2%求余B % A++自增A++ 1--自减A--Go语言的关系运算符:运算符含义示意==检查两个值是否相等。(A == B) 为 False!=检查两个值是否不相等。(A != B) 为 True&...
2019-11-27 阅读:2199
Go的工程项目管理非常简单,使用目录结构和包名来确定工程结构和构建顺序。 环境变量GOPATH在项目管理中非常重要,想要构建一个项目,必须确保项目目录在GOPATH中。而GOPATH可以有多个项目用";"分隔。
2019-11-27 阅读:2057