Golang|04 面向接口

golang中没有继承和多态,只支持封装,那些在C/C++/Java中使用继承和多态实现的方式,在golang中就可以使用接口来进行实现,golang的接口比其他语言就灵活很多。 如下就是一个使用接口的例子: type Traversal interface { Traverse() } func main() { traversal := getTraversal() traversal.Traverse() } 1. duck typing的概念 1.1 大黄鸭是鸭子吗? 传统类……

阅读全文

Golang|03 面向对象

1.结构体和方法 go 语言仅支持封装,不支持继承和多态 go语言没有 class,只有 struct 1.1 结构的创建 root.left = &treeNode{} root.right = &treeNode{5, nil, nil} root.right.left = new(treeNode) 不论地址还是结构本身,一律使用.来访问成员 func createNode(value int) *treeNode { return &treeNode{value: value} } root.left.right = createNode(2) //使用自定义工厂函数 注意上述代码中,createNode返回了局部变量的地址, 这种方式在C/C++……

阅读全文

Golang|02 内建容器

1.数组 var arr1 [5]int // 声明数组 arr2 := [3]int{1, 3, 5} // 声明数组并赋值 arr3 := [...]int{2, 4, 6, 8, 10} // 不输入数组长度,让编译器来计算长度 var grid [4][5]int // 二维数组 数量写在类型前 可通过 _ 来省略变量,不仅仅是 range,任何地方都可通过 _ 来省略变量 sum := 0 for _, v := range numbers { sum += v } 如果只要下标 i,可写成for i := range numbers 为人么要用 range? 因为意……

阅读全文

Golang|01 基础语法

1. 变量和常量 golang中变量的定义结构是:var 变量名 类型。golang中内建变量类型有: bool, string (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr(指针)未指定长度时根据操作系统是多少位来决定 byte, rune(长度32位,相当于 char,解决多国语言问题) float32, float64, complex64, complex128 可以看到golang中没有char, 只有rune……

阅读全文