zoukankan      html  css  js  c++  java
  • Go使用详解

    1.什么是Go
    keep it simple stupid的编程语言

    2.安装
    以Ubuntu为例

    # 下载安装包
    wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
    # 解压到 /usr/local(或者也可以解压到自定义目录,就是需要对应配置一下路径)
    sudo tar -C /usr/local -xzf go1.6.3.linux-amd64.tar.gz
    # 更新 PATH 环境变量,在 ~/.bashrc 中添加下面这行
    export PATH=$PATH:/usr/local/go/bin
    # 启用更新
    source ~/.bashrc
    # 检测版本
    go version
    

    配置$GOPATH环境变量,指定go项目的工作空间workspace,package安装目录

    3.常用命令

    go build hello.go 就可以编译出最终执行文件,这样直接执行 ./hello 就可以看到结果
    go clean 可以清理编译后的文件
    go doc fmt 可以查看 fmt 包的文档
    go env 显示 Go 相关的环境变量
    go fmt 利用 gofmt 工具自动排版代码
    go get 下载并安装 package
    go install 编译并安装 package
    go list 列出 package
    go run hello.go 编译并运行 Go 程序
    go test fmt 测试 fmt package
    go tool 运行指定的 Go 工具,包括 addr2line, asm, cgo, compile, cover, dist, doc, fix, link, nm, objdump, pack, pprof, tour, trace, vet, yacc
    

    4.go程序示例

    package main
    
    import "fmt"
    
    func main() {
        fmt.Printf("Hello World! This is wdxtub!
    ")
    }
    

    运行结果:

    dawang:~/Go$ go run hello.go 
    Hello World! This is wdxtub!
    

    1)非注释的第一行定义包名,每个程序属于一个package,每个Go应用都包含一个名为main的包
    2)import关键字引入包

    5.指针
    指针表示变量的内存地址

    package main
    import "fmt"
    func main() {
    	i := 42
    	p := &i         // point to i
    	fmt.Println(*p) // read i through the pointer
    	*p = 21         // set i through the pointer
    	fmt.Println(i)  // see the new value of i
    }
    

    运行结果:

    D:Go_WorkSpacego_orm>go run main.go
    42
    21
    

    6.数组

    package main
    
    import "fmt"
    
    func main() {
    	var a []int
    	a = append(a, 5)
    	a = append(a, 4)
    	a = append(a, 10)
    	for i := 0; i <len(a); i++{
    		fmt.Println(a[i])
    	}
    	
    	p := []int{2, 3, 5, 7, 11, 13}
    	fmt.Println("p ==", p)
    	for i := 0; i < len(p); i++ {
    		fmt.Printf("p[%d] == %d
    ", i, p[i])
    	}
    }
    

    运行结果:

    D:Go_WorkSpacego_orm>go run main.go
    5
    4
    10
    p == [2 3 5 7 11 13]
    p[0] == 2
    p[1] == 3
    p[2] == 5
    p[3] == 7
    p[4] == 11
    p[5] == 13
    

    7.字典

    import "fmt"
    
    func main() {
    	var a = make(map[string]int)
    	a["a"] = 1
    	a["b"] = 2
    	fmt.Print(a)
    }
    

    运行结果:

    D:Go_WorkSpacego_orm>go run main.go
    map[a:1 b:2]
    

    8.分支语句
    1)if

    package main
    
    import "fmt"
    
    func main() {
    	if a := 1; a>0{
    		fmt.Println(">0")
    	}else{
    		fmt.Println("<=0")
    	}
    }
    

    运行结果:

    >0
    

    2)switch

    package main
    
    import "fmt"
    
    func main() {
    	a := 1
    	switch {
    	case a == 0:
    		fmt.Println("is 0")
    	case a == 1:
    		fmt.Println("is 1")
    	case a == 2:
    		fmt.Println("is 2")
    	default:
    		fmt.Println("default")
    	}
    }
    

    运行结果:

    is 1
    
    package main
    
    import "fmt"
    
    func main() {
    	a := 1
    	switch a{
    	case 0:
    		fmt.Println("is 0")
    	case 1:
    		fmt.Println("is 1")
    	case 2:
    		fmt.Println("is 2")
    	default:
    		fmt.Println("default")
    	}
    }
    

    运行结果:

    is 1
    

    3)select
    select是go中的一个控制结构,类似用于通信的switch语句,每个case必须是一个通信操作,要么是发送要么是接收,select随机执行一个可运行的case,如果没有case可运行,它将阻塞,直到有case可运行。

    9.并发与通信
    待完善

    10.其他
    1)defer
    函数中定义,但是在函数结束后才执行的表达式

    2)panic
    待定

    3)recover
    待定

    4)iota
    计数器,值会累加

  • 相关阅读:
    mysql重置root密码
    node.js和JavaScript的关系
    转Git仓库分支(Branch)和标签(Tag)
    Spring MVC @CookieValue注解(5)
    Spring MVC @RequestParam(5)
    Spring REST(4)
    Spring MVC @PathVariable注解(3)
    Spring MVC @RequestMapping注解详解(2)
    Spring MVC入门示例(1)
    spring @Transactional注解参数详解(13)
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/10307427.html
Copyright © 2011-2022 走看看