Go语言初探|青训营笔记

151 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算

一、Hello World

示例代码:

package main
import (
    "fmt"
)
func main(){
    fmt.Println("Hello world")
}

运行方式:

go build file_name.go
.\file_name.exe

go run file_name.go

解读:

  1. 第一行定义了测试代码所属的包为main

    在Go语言中,所有go文件都属于某个包(Package)

  2. 接下来导入了标准库fmt包,用于将字符串输出到屏幕上

  3. main函数是Go程序的入口,没有参数和返回值

二、基础语法

1、变量

Go语言是一门静态语言,所以需要在使用变量前声明类型

Go语言的变量声明主要有两种:

  1. 通用格式:

    var a int = 10
    

    var :变量声明关键字

    a :变量名

    int :数据类型

    10 :初值

    此外,数据类型可以省略,通过初值自动推导

    var a = 10
    
  2. 短变量声明

    a := 10
    

    连var关键字也省略了,是Go的一个语法糖,但是只能用于局部变量声明

2、控制结构

  1. Go语言中,if语句后没有括号,并且必须带大括号
    if i > 0 {
        fmt.Println("i is greater than 0")
    }
    
  2. Go语言中只有for循环
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
    
  3. Go语言中,switch case不需要单独加break

3、数组和切片

数组就是一个具有编号且长度固定的元素序列

    var a [5]int

对于数组,可以方便地通过索引存取元素,并且可以直接打印一个数组;但其长度固定,所以在实际业务中更常用切片

切片可通过make创建,通过append追加元素

    s := make([]string, 1)
    s[0] = "a"
    s = append(s, "b")

切片支持类似Python的slice操作,但不支持负数索引

4、map

字典,通过make创建

    m := make(map[string]int)
    m["one"] = 1

5、函数

格式:func + 函数名 + 参数列表 + 返回值列表 + 大括号 + 函数体

    func add(a int, b int) int {
        return a + b
    }

6、指针

类似C/C++中的指针,但支持的操作有限,主要用来对传入参数进行修改

7、结构体&结构体方法

带类型的字段集合

type user struct {
    name string
    password string
}

在Go语言中,可以为结构体定义一些方法,类似“类成员函数”

func (u *user) resetPwd(pwd string) {
    u.password = pwd
}

带指针和不带指针的区别:调用该函数时是否将操作应用到调用实例上


Ref:

字节跳动青训营 - Go语言上手-基础语言

百度百科 - golang