美文网首页
golang语法速览

golang语法速览

作者: sladeliu | 来源:发表于2017-10-13 13:04 被阅读0次

关键字

break      default       func     interface   select
case       defer         go       map         struct
chan       else          goto     package     switch
const      fallthrough   if       range       type
continue   for           import   return      var

内建常量:

true false iota nil

内建类型:

int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error

内建函数:

make len cap new append copy close delete
complex real imag
panic recover

声明

var i = 1000
func main() {}
const PI = 3.141592653589793 
type Model struct {}

变量

var 名字 类型 = 表达式

指针

取地址 p := &x
解引用 *p = 2

一些数据类型

array

// 字面量
array := [5]int{1,2,3,4,5}

slice

var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
// 基于数组
var mySlice1 []int = myArray[:5]
// 使用make
mySlice2 := make([]int, 5, 10)
// 字面量
mySlice3 := []int{1, 2, 3, 4, 5}

i, v := range []mySlice1 

map

var myMap map[keyType]valueType
make(map[keyType]valueType, 100)
myMap = map[keyType]valueTyep {}

new

new(类型) 返回该类型的一个指针
p := new(int)
```go

# 生命周期
包级的变量和程序的生命周期一致
局部变量不再被引用时自动销毁
 
# 流程控制
## if else
```go
func example(x int) int { 
    if x == 0 {
        return 5
    } else {
        return x }
}

switch case default fallthrough

switch i {
    case 0:
        fmt.Printf("0") 
    case 1:
        fmt.Printf("1") 
    case 2:
        fallthrough 
    case 3:
        fmt.Printf("3") 
    case 4, 5, 6:
        fmt.Printf("4, 5, 6") 
    default:
        fmt.Printf("Default")
}

for break continue

普通for循环

sum := 0
for i := 0; i < 10; i++ {
    sum += i 
}
 
a := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(a) – 1; i < j; i, j = i + 1, j – 1 {
    a[i], a[j] = a[j], a[i]
}

模仿while(go没有while、do-while)

sum := 0 
for {
    sum++
    if sum > 100 {
        break
    } 
}

break跳转

for j := 0; j < 5; j++ {
    for i := 0; i < 10; i++ {
        if i > 5 { 
            break JLoop
        }
        fmt.Println(i)
    } 
}
JLoop: 
// ...

goto

接口

interface Reader {
read()
}

函数

defer func1()
defer func2()
先进后出,所以先执行func2,后执行func1

goroutine

启动一个goroutine(go的并发体)

go f()

创建一个channel(go的通信机制)

ch = make(chan int)
ch = make(chan int, 3) // 带缓冲

接收

x = <-ch // 从ch接收数据,并保存在x

发送

ch <- x // 将x的内容发送到ch

关闭

close(ch)

多路复用

select {
    case <-ch1:
        //
    case x := <-ch2:
        // fmt.Println(x)
    case ch3 <- y:
        //
    default:
        //
}

相关文章

  • golang语法速览

    关键字 内建常量: 内建类型: 内建函数: 声明 变量 指针 一些数据类型 array slice map new...

  • Markdown语法速览

    参考文章献给写作者的 Markdown 新手指南1分钟学会Markdown语法 标题 生成1至6级标题,只需在文字...

  • dart语法速览

    dart语法速览 类与构造 泛型 Factory与私有 生成器 类型别名 异步

  • Go语法速览

    Go语法速览 字符串 指针数组 结构体 切片 一般我们在创建新切片的时候,最好要让新切片的长度和容量一样,这样我们...

  • [原创] Cmake语法速览

    0 源文件 Cmake的源码文件,可以包含命令+注释+空格+换行。 以cmake编写的源文件以CMakeLists...

  • Go 语法速览与实践清单(上-V0.5)

    Go 语法速览与实践清单(V0.5) Go CheatSheet(http://t.cn/RnmIs48) 是对于...

  • Python 语法速览与实战清单

    基础语法 Python 是一门高阶、动态类型的多范式编程语言;定义 Python 文件的时候我们往往会先声明文件编...

  • Python 语法速览与实战清单

    基础语法 Python 是一门高阶、动态类型的多范式编程语言;定义 Python 文件的时候我们往往会先声明文件编...

  • Go 语法速览与实践清单(下-V0.5)

    接 Go 语法速览与实践清单(上-V0.5) Embedding Go 语言中并没有子类继承这样的概念,而是通过嵌...

  • Golang 语法到底是怎么回事?gdb调一调?

    “ 上一篇用gdb分析了golang的数据结构,这一期分析golang的语法。” Golang语法到底是怎么回事?...

网友评论

      本文标题:golang语法速览

      本文链接:https://www.haomeiwen.com/subject/xrdzyxtx.html