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
    计数器,值会累加

  • 相关阅读:
    Oracle常用命令大全(很有用,做笔记)
    表格驱动编程在代码中的应用
    mac 利用svn下载远程代码出现Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
    FAILURE: Build failed with an exception.
    There is an internal error in the React performance measurement code.Did not expect componentDidMount timer to start while render timer is still in progress for another instance
    react native TypeError network request failed
    Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)
    react-native Unrecognized font family ‘Lonicons’;
    react-native SyntaxError xxxxx/xx.js:Unexpected token (23:24)
    Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/10307427.html
Copyright © 2011-2022 走看看