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类型
848

被折叠的 条评论
为什么被折叠?



