DAY1-GO初識(概述)

1、概述架構

一、特徵併發

1.一、語法簡單:規則嚴謹、保留指針、但默認阻止指針運算、將切片和字典做爲內置類型、更好的維護性;函數

1.二、併發模型:運行時用GOroutine,一個關鍵字、簡單而天然;搭配channel實現CSP模型;編碼

1.三、內存分配:內存分配器完整保留了tcmalloc的原始架構,使用cache提供無鎖分配、多個centrl在不通線程間平衡內存單元複用、heap管理大塊內存;線程

1.四、垃圾回收:併發標記,逐步引入三色標記、寫屏障;指針

二、簡介code

2.一、源文件:blog

源碼文件使用UTF-8編碼,對Unicode支持良好。package聲明所屬包名稱,以".go"做爲文件擴展名,語句結束分號默認省略,入口函數main沒有參數,必須放在main包中,索引

用import導入標準庫或第三方包內存

示例:

package main

import (

  "fmt"

func main() {

  fmt.Println("hello,world!")

}

可直接運行,或編譯爲可執行文件

go run main.go

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.三、表達式

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)
    }
}
輸出:
相關文章
相關標籤/搜索