Linux安装GoLang

  1. 作者QQ:67065435 QQ群:669756510

  2. 本站内容全部为作者原创,转载请注明出处!

安装GoLang

  1. 官方网站

  2. 下载解压安装

    cd /root
    wget --no-check-certificate -c https://dl.google.com/go/go1.24.2.linux-amd64.tar.gz
    tar -xf go1.24.2.linux-amd64.tar.gz
    mv /root/go /usr/local/go
    
  3. 加入环境变量

    vim /etc/profile
    
    export GOPROXY=https://goproxy.cn,direct
    export GOROOT=/usr/local/go
    export PATH=$PATH:/usr/local/go/bin
    
    ESC
    :wq
    
    source /etc/profile
    
  4. 目录权限

    chown -R www:www /usr/local/go
    
  5. 测试是否安装成功

    su www
    go env
    
  6. 语法-常量变量

    package main
    
    import (
      "fmt"
    )
    
    func main (){
      //变量、常量定义
      var a int = 10
      fmt.Println(a)
    
      var b = 20
      fmt.Println(b)
    
      c := 30
      fmt.Println(c)
    
      var d, e int = 40, 50
      fmt.Println(d, e)
    
      const f = 3.1415926
      fmt.Println(f)
    }
    
  7. 语法-数组、键值对、结构体

    package main
    
    import (
      "fmt"
    )
    
    func main (){
      //声明数组
      arr1 := [3]int{1,2,3}
      fmt.Println(arr1)
    
      arr2 := []int{1,2,3}
      arr2 = append(arr2, 4)
      fmt.Println(arr2)
      fmt.Println(arr2[0:3])
    
      //声明键值对
      map1 := make(map[string]any)
      map1["a"] = 1
      map1["b"] = "b"
      map1["c"] = "abc"
      map1["d"] = []int{1, 2, 3}
      fmt.Println(map1)
    
      //调用结构体
      type User struct {
        name string
        age int
        sex string
      }
      user := User{name: "geng", age: 20, sex: "男"}
      fmt.Println(user)
    }
    
  8. 语法-条件判断

    package main
    
    import (
      "fmt"
    )
    
    func main (){
      //条件判断
      a := 6
      b := 6
      if a == 6 && b == 6 {
        fmt.Println("非常6")
      }else if a == 6 || b == 6 {
        fmt.Println("有点6")
      } else {
        fmt.Println("不太6")
      }
      //条件判断
      a = 6
      b = 8
      if a == 6 && b == 6 {
        fmt.Println("非常6")
      }else if a == 6 || b == 6 {
        fmt.Println("有点6")
      } else {
        fmt.Println("不太6")
      }
      //条件判断
      a = 8
      b = 8
      if a == 6 && b == 6 {
        fmt.Println("非常6")
      }else if a == 6 || b == 6 {
        fmt.Println("有点6")
      } else {
        fmt.Println("不太6")
      }
    }
    
  9. 语法-循环流程

    package main
    
    import (
      "fmt"
    )
    
    func main (){
      //循环控制-for
      for i := 1; i <= 5; i++ {
        fmt.Println(i)
      }
    
      //流程控制-switch
      w := "Sat"
      switch w {
        case "Sun":
        fmt.Println("今天继续休息")
        case "Sat":
        fmt.Println("今天开始休息")
        default:
        fmt.Println("今天要工作了")
      }
    }
    
  10. 语法-调用函数

    package main
    
    import (
      "fmt"
    )
    
    func add (x int, y int) int {
      return x + y
    }
    
    func swap (x int, y int) (int, int) {
      return y, x
    }
    
    func main (){
      //调用函数-单返回值
      i := add(1, 2)
      fmt.Println(i)
    
      //调用函数-多返回值
      x := 1
      y := 2
      x, y = swap(x, y)
      fmt.Println(x)
      fmt.Println(y)
    }
    
  11. 语法-并发支持

    package main
    
    import (
      "fmt"
      "time"
      "sync"
    )
    
    func worker(id int, wg *sync.WaitGroup) {
      defer wg.Done()
      fmt.Println("任务", id, "开始执行")
      for i := 1; i <= (6 + id); i++ {
        fmt.Println("任务", id, "执行中", i)
        time.Sleep(1 * time.Second)
      }
      fmt.Println("任务", id, "执行完毕")
    }
    
    func main (){
      //并发支持-实时监测
      var wg sync.WaitGroup
      wg.Add(1)
      go worker(1, &wg)
      wg.Add(1)
      go worker(5, &wg)
      wg.Add(1)
      go worker(9, &wg)
      wg.Wait()
      fmt.Println("Done")
    }
    
  12. 语法-错误处理

    package main
    
    import (
      "fmt"
      "errors"
    )
    
    func mathDiv(a, b float64) (float64, error) {
      if b == 0 {
        return 0, errors.New("除数不能为空")
      }
      return a / b, nil
    }
    
    func main (){
      //错误处理
      res, err := mathDiv(10, 0)
      if err != nil {
        fmt.Println("错误:", err)
      } else {
        fmt.Println("结果:", res)
      }
    }
    
  13. 语法-经典排序

    package main
    
    import "fmt"
    
    func PopSort(arr []int) []int {
        //空数组和只有一个元素的数组直接返回
        if len(arr) < 2 {
            return arr
        }
        end := len(arr) - 1
        //将数组中最大的元素逐步放到数组末尾,而后比较剩余部分
        for j := 0; j < end; j++ {
            for i := 0; i < end-j; i++ {
                if arr[i] > arr[i+1] {
                    arr[i], arr[i+1] = arr[i+1], arr[i]
                }
            }
        }
        return arr
    }
    
    func SelSort(arr []int) []int {
        //空数组和只有一个元素的数组直接返回
        if len(arr) < 2 {
            return arr
        }
        end := len(arr) - 1
        //将数组中最大元素的键记下来,而后将其值与数组最后一个元素互换
        for j := 0; j < end; j++ {
            k := 0
            for i := 1; i <= end-j; i++ {
                if arr[k] < arr[i] {
                    k = i
                }
            }
            arr[k], arr[end-j] = arr[end-j], arr[k]
        }
        return arr
    }
    
    func insSort(arr []int) []int {
        //空数组和只有一个元素的数组直接返回
        if len(arr) < 2 {
            return arr
        }
        end := len(arr) - 1
        //将数组中每个元素与前面的元素进行比较,如果前面的元素更大则互换两个元素的位置
        for i := 1; i <= end; i++ {
            for j := 0; j < i; j++ {
                if arr[i] < arr[j] {
                    arr[i], arr[j] = arr[j], arr[i]
                }
            }
        }
        return arr
    }
    
    func qukSort(arr []int, l, r int) []int {
        if l < r {
            s := split(arr, l, r)
            qukSort(arr, l, s-1)
            qukSort(arr, s+1, r)
        }
        return arr
    }
    
    // 核心:将左端元素做为分割数,小于分割数放左边否则放右边
    func split(arr []int, l, r int) int {
        i := l
        for j := l + 1; j <= r; j++ {
            if arr[j] < arr[l] {
                //将小的放左边,大的数本来就在右边无需处理
                i++
                arr[i], arr[j] = arr[j], arr[i]
            }
        }
        arr[l], arr[i] = arr[i], arr[l]
        return i
    }
    
    func main() {
        arr := []int{3, 8, 33, 2, 9, 77, 4, 7, 1, 6, 55, 5}
        var arr1 []int
    
        arr1 = PopSort(arr)
        fmt.Println(arr1)
    
        arr1 = SelSort(arr)
        fmt.Println(arr1)
    
        arr1 = insSort(arr)
        fmt.Println(arr1)
    
        arr1 = qukSort(arr, 0, len(arr)-1)
        fmt.Println(arr1)
    }
    

参考链接

  1. 中文网站

  2. 官方网站

Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2025-08-27 11:36

results matching ""

    No results matching ""