1 minute read

学习 Go 的笔记

变量

强类型和弱类型都可以支持

赋值 - 强类型

//var 变量名 变量类型 = 值
var i int = 1

赋值 - 弱类型

//变量名 := 值
i := 1

根据值来判断类型,所以必须初始化

变量类型

  • bool
  • string
  • int, int8, int16, int32, int64
  • uint, uint8, uint16, uint32, uint64
  • byte = unit8
  • rune = int32(uncode code point)
  • float32, float64
  • complex32, complex64 (虚数)

格式控制

  • %T (要大写)

const

// const 变量名 = 值
const i = 1

//这里没有:

指明变量类型是可选的

const 变量名 变量类型 = 

const 可以 使用() 形式,同时声明多个变量。

for 和 while

  • for

普通 for

for i := 0; i < 10; i++ {
  // 这里不需要园括号
}
  • while

Go 里的 while 是直接使用同一个关键词 for

i := 1
for i < 100 {
  //这里不需要使用分号
}
  • forever loop
for {

}

if

if x < 0 {

}

if v:=math.pow(x, n); v < lim {
  //可以提前赋值
}

if 条件表达式 {

} else {

}

switch

switch 赋值; 变量 {
    case label:
    default:
}
// label 可以做运算, 比如: 
// case label + 0:
switch {
  case 条件表达式
  case 条件表达式
}

// 可以等价的看做一堆if else 的集合

defer

struct

type Vertex struct {
	X int
	Y int
	Z float32
}

和C差不多。 取消了 -> 访问都是.

以后都是用Vertex 作为变量的名称 如果都没有初始化,那么会提供默认初始化为0。 但是有了一个初始化后,使用 变量初始化 没事。

type Vertex struct {
	X, Y int
}
v2 = Vertex{X: 189}  // Y:0 is implicit, 结果是 189, 0

如果不使用变量如:

Vertex{1}
// 会报错

Arrays

var 变量名[数组大小] 变量类型

var a [10]int
// 显示声明

变量名:= [数组大小] 变量类型 {} // 值为空或者少于大小都可
primes := [6]int{2, 3, 5, 7, 11, 13}

Slices

切片 同python