linux——centos7安装go环境

1、go的 环境安装

  1. 此处使用的是 linux 环境

  2. 去官方下载go 包

  3. tar -zxvf go。tar -C /usr/local

  4. 解压完成后配置 环境 $GOPATH $GOROOT 根据 go version + go --help

  5. 使用go moudles 而非 go root 节点

  6. 初始化 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 的数据类型

  1. 基本数据类型

    1. string 、int 、double 、complex

  2. 复合基本类型

    1. 数组

    2. slice : 引用

    3. struct

    4. map:引用

  3. 函数

  4. 指针、channel 引用

  5. 接口

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类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值