1、go的 环境安装
此处使用的是 linux 环境
去官方下载go 包
tar -zxvf go。tar -C /usr/local
解压完成后配置 环境 $GOPATH $GOROOT 根据 go version + go --help
使用go moudles 而非 go root 节点
初始化 go项目 init go moudles (name)
2、go hello world
package main import "fmt" func main (){ fmt.Println("hello world") }
3、go 的定义变量
package main import "fmt" // 适用于成员变量 var a int var a int = 100 var a =100 func main (){ //适用于 局部变量 a := 100 fmt.Println("hello world") }
4、go 的数据类型
基本数据类型
string 、int 、double 、complex
复合基本类型
数组
slice : 引用
struct
map:引用
函数
指针、channel 引用
接口
5、map的定义
package main import "fmt" func main() { var map1 map[int]string = make(map[int]string) map1[0] = "java" map1[1] = "python" map1[2] = "go" defer fmt.Println(map1) map2 := make(map[string]string) map2["name1"] = "java" map2["name2"] = "python" map2["name3"] = "go" fmt.Println(map2) //具体实现的方式 map3 := map[string]string{ "name1": "java", "name2": "python", "name3": "go", } fmt.Println(map3) }
6、切片 + map 的遍历
package main import "fmt" func main() { var map1 map[int]string = make(map[int]string) map1[0] = "java" map1[1] = "python" map1[2] = "go" defer fmt.Println(map1) map2 := make(map[string]string) map2["name1"] = "java" map2["name2"] = "python" map2["name3"] = "go" fmt.Println(map2) //具体实现的方式 map3 := map[string]string{ "name1": "java", "name2": "python", "name3": "go", } fmt.Println(map3) //遍历map printMap(map1) // printMap(map2) // printMap(map3) slice := make([]string, 3) slice[0] = "java" slice[1] = "python" slice[2] = "go" printSlice(slice) } func printMap(m map[int]string) { for k, v := range m { fmt.Printf("key := %v , value := %v\n", k, v) } } func printSlice(s []string) { for _, v := range s { fmt.Printf("value := %v\n", v) } }
7、自定义结构体 struct + 值传递 + 引用传递
package main import "fmt" //声明一个结构体 type Person struct { Name string Age int Gender string } // 定义set 方法 func SetPerson(p *Person) { p.Name = "Alice" p.Age = 25 p.Gender = "Female" } // 定义get 方法 func GetPerson() Person { p := Person{ Name: "Bob", Age: 30, Gender: "Male", } return p } func main() { // 调用get 方法 p1 := GetPerson() fmt.Println(p1) // 调用set 方法 SetPerson(&p1) fmt.Println(p1) }
8、go 的 继承
package main import "fmt" type Animal struct { Name string Age int Color string } func (a Animal) Eat() { fmt.Println("Animal is eating") } func (a Animal) Sleep() { fmt.Println("Animal is sleeping") } type Dog struct { //继承的写法 这样就继承了 animal Animal Speack string } func main() { dog := Dog{Animal{"jinmao", 2, "yellow"}, "Hello"} dog.Eat() dog.Sleep() dog.Speack = "Wang wang" fmt.Println(dog.Speack) }
9、go 的 接口 实现多态的特性
package main import "fmt" type Animal interface { //此时的方法是有 返回值 Name() string Age() int Color() string } type Dog struct { name string } func (a *Dog) Name() string { fmt.Println("Dog is eating") return a.name } func (a *Dog) Age() int { fmt.Println("Dog is eating") return 1 } func (a *Dog) Color() string { fmt.Println("Dog is sleeping") return "White" } func Hello(a Animal) { fmt.Println("Hello from Animal") fmt.Println(a.Name()) fmt.Println(a.Age()) fmt.Println(a.Color()) } func main() { dog := Dog{name: "Duotai"} // fmt.Println(dog.name) // dog.Name() // dog.Color() Hello(&dog) }
10、interface{} == object 万能数据类型
a inteface{} a.(string)//判断 a是否是是string类型