Linux安装GoLang
作者QQ:67065435 QQ群:669756510
本站内容全部为作者原创,转载请注明出处!
安装GoLang
下载解压安装
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加入环境变量
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目录权限
chown -R www:www /usr/local/go测试是否安装成功
su www go env语法-常量变量
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) }语法-数组、键值对、结构体
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) }语法-条件判断
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") } }语法-循环流程
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("今天要工作了") } }语法-调用函数
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) }语法-并发支持
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") }语法-错误处理
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) } }语法-经典排序
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) }