DAY1-GO初识(概述)

一、概述

1、特征

1.1、语法简单:规则严谨、保留指针、但默认阻止指针运算、将切片和字典作为内置类型、更好的维护性;

1.2、并发模型:运行时用GOroutine,一个关键字、简单而自然;搭配channel实现CSP模型;

1.3、内存分配:内存分配器完整保留了tcmalloc的原始架构,使用cache提供无锁分配、多个centrl在不通线程间平衡内存单元复用、heap管理大块内存;

1.4、垃圾回收:并发标记,逐步引入三色标记、写屏障;

2、简介

2.1、源文件:

源码文件使用UTF-8编码,对Unicode支持良好。package声明所属包名称,以".go"作为文件扩展名,语句结束分号默认省略,入口函数main没有参数,必须放在main包中,

用import导入标准库或第三方包

示例:

package main

import (

  "fmt"

func main() {

  fmt.Println("hello,world!")

}

可直接运行,或编译为可执行文件

go run main.go

2.2、变量

使用var定义变量,编译器总是被初始化为零值,避免出现意外状况,

示例一:

package main

func main() {

  var x int32

  var s = "hello,world!"

  println(x,s)

}

在函数内部,还可省略var关键之,使用更简单的定义模式

示例二:

package main

func main() {

  x := 100  //注意,赋值符号不同

  println(x)

}

2.3、表达式

GO仅有三种流控制语句

if 示例:

package main
func main() {
  x := 0
  if x > 0 {
    println("x")
  } else if x < 0 {
    println("-x")
  } else {
    println("0")
  }
}
switch示例:
package main
func main() {
    x := 100
    switch {
        case x > 0:
            println("x")
        case x < 0:
            println("-x")
        default:
            println("0")
    }
}
for 示例:
package main
// func main() {
//  for i :=0; i < 5; i++ {
//      println(i)
//  }
// }

// func main() {
//  for i :=4; i >= 0; i-- {
//      println(i)
//  }
// }

// func main () {
//  x := 0
//  for x < 5 {     //相当于 while (x < 5) {...}   
//      println(x)
//      x ++
//  }
// }

// func main() {
//  x := 4
//  for {
//      println(x)  //相当于 while true {...}
//      x--
//      if x < 0 {
//          break
//      }
//  }
// }

// 在迭代遍历时, for...range 除元素外,还可返回索引
func main() {
    x := []int{100,101,102}
    for i, n := range x {
        println(i, ":", n)
    }
}
输出:

 

 

 

posted @ 2017-12-18 13:58 willpower-chen 阅读(...) 评论(...) 编辑 收藏