摘要:
其他类型能够实现接口,函数也可以,本节将对结构体与函数实现接口的过程进行对比。 完整的代码: package main import "fmt" /* 这个接口需要实现 Call() 方法,调用时会传入一个 interface{} 类型的变量,这种类型的变量表示任意类型的值。 */ type Inv 阅读全文
摘要:
Go语言支持匿名函数,即在需要使用函数时再定义函数,匿名函数没有函数名只有函数体,函数可以作为一种类型被赋值给函数类型的变量,匿名函数也往往以变量方式传递,这与C语言的回调函数比较类似,不同的是,Go语言支持随时在代码里定义匿名函数。 程序代码: package main import "fmt" 阅读全文
摘要:
使用 SQL 语言从数据库中获取数据时,可以对原始数据进行排序(sort by)、分组(group by)和去重(distinct)等操作,SQL 将数据的操作与遍历过程作为两个部分进行隔离,这样操作和遍历过程就可以各自独立地进行设计,这就是常见的数据与操作分离的设计。对数据的操作进行多步骤的处理被 阅读全文
摘要:
Go语言中传入与返回参数在调用和返回时都使用值传递,这里需要注意的是指针、切片和 map 等引用型对象在参数传递中不会发生复制,而是将指针进行复制,类似于创建一次引用。 程序实例: package main import "fmt" type Data struct { complax []int 阅读全文
摘要:
使用一个数值表示时间中的“秒”值,然后使用 resolveTime() 函数将传入的秒数转换为天、小时和分钟等时间单位。 package main import "fmt" /* 时间常量 */ const ( //定义每分钟的秒数 SecondsPerMinute = 60 //定义每小时的秒数 阅读全文
摘要:
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找算法的前提是传入的序列是有序的(降序或升序),并且有一个目标值。二分查找的核心思想是将 n 个元素分成大致相等的两部分,取中间值 a[n/2] 与 x 做比较,如果 x=a[n/2],则找到 x,算法中止, 阅读全文
摘要:
package main import "fmt" func main() { array := [...]int32{3, 1, 9, 29, 15} n := len(array) fmt.Println("未排序前:", array) /* 冒泡排序 */ for i := 0; i <= n 阅读全文
摘要:
基本写法 Go语言改进了 switch 的语法设计,case 与 case 之间是独立的代码块,不需要通过 break 语句跳出当前 case 代码块以避免执行到下一行,示例代码如下: var str = "hello" //基本用法 switch str { case "good": fmt.Pr 阅读全文
摘要:
Go语言中 new 和 make 是两个内置函数,主要用来创建并分配类型的内存。在我们定义变量的时候,可能会觉得有点迷惑,不知道应该使用哪个函数来声明变量,其实他们的规则很简单,new 只分配内存,而 make 只能用于 slice、map 和 channel 的初始化 new 在Go语言中,new 阅读全文
摘要:
nil 标识符是不能比较的 package main import "fmt" func main() { fmt.Println(nil == nil) } .\nil.go:6:18: invalid operation: nil == nil (operator == not defined 阅读全文