go最近很火啊,自带高并发,内置网络模块强大,作为后端工程师一枚,自然也要学起来!

go 的基础部分跟我们之前学过的大部分语言是都是十分相似的,上手十分简单。

第一个go程序

第一个程序大都是hello嘛,向新世界打个招呼 :)

import fmt

func main(){
    fmt.Println("hello golang!")
}

数据类型以及变量声明的方式

变量声明的方式

// var 变量名 类型 = 表达式
var num int = 1
// 也可以声明变量,但是不赋值
var num int		// 这样的默认值就是int的默认值 0 
// 可以直接赋值并且声明类型
num := 1
// 可以实现多值定义
a, b, c := 1, 2, "hello"
var (
    a = 1
    b = 2
    c = "hello"
)

常量声明

常量声明,我们可以直接使用 const 关键字,不需要指定数据的类型,通常,常量我们用大写进行命名

我们指定变量的值,会自定将变量转为对应的类型

const MAX_SIZE = 10

基础类型

  • 整型
    • 有符号:int, int8, int16, int32, int64
    • 无符号:uint,uint8,uint16,uint32,uint64
  • 浮点数:float,float32, float64
  • 布尔型:bool
  • 字符串:string
  • 指针
  • 常量:使用const声明 const name = "Mike"

字符串转换

  • 字符串转数字: strconv.Atoi("123")
  • 数字转字符串:strconv.Itoa(123)

数字类型的强制转换:

  • int -> float: i2f = float(i)
  • float -> int: f2i = int(f)

3. 控制结构:if/for/switch

if

// 单纯的if
if you == "mike" {
    fmt.Println("Yes, I am mike.")
}

// if + else
if you == "mike" {
    fmt.Println("Yes, I am mike.")
} else {
    fmt.Println("No, my name is ", you)
}

// if + else if + else
if you == "mike" {
    fmt.Println("Yes, I am mike.")
} else if you == "lisa" {
    fmt.Println("Ok, I am lisa.")
} else {
    fmt.Println("No, my name is ", you)
}

switch

  • switch 自带break
  • 可以使用fallthrough,让程序执行到下一个条件
switch you {
case "mike":
    // yes I am mike
case "lisa":
    // yes I am lisa
case "john":
    // I am john, fall through to default
    fallthrough
default:
    // nothing match
}

for

// 简单for循环
for i := 0; i < 100; i++ {
    // do something...
}

// for 实现while循环
for {
    // do something
    // then break
}

// 或者
for i < 100 {
    // do something
    // increase i
    // i++
}

// 使用for range 遍历数组或者其他可迭代对象
nums := []int{1,2,3}
for index, num := range nums {
    // print(idx, num)
}