走进 Go 语言基础语言 | 青训营笔记

69 阅读2分钟

Go语言

一、环境安装

  1. 下载go语言

    下载地址:go.dev/

    查看go语言版本:

go版本.png

  1. VS Code安装go插件

    VS Code报错:

VSCode报错1.png ​ 解决方法:

​ cmd执行以下命令,然后重启VS Code并执行Install

#开启代理设置
go env -w GO111MODULE=on
#设置代理源 
go env -w GOPROXY=https://goproxy.cn,direct

二、基础语法

  1. Hello World

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

    go run1.png

  2. =,:=

    =,赋值;

    :=,声明变量并赋值

  3. 变量

    var

  4. 常量

    const

  5. if else

    if 条件{
        
    }else{
        
    }
    
  6. 循环

    //死循环
    for {
    
    }
    //条件循环
    for 条件{
    
    }
    
  7. switch

    switch 变量{
    	case1:
    		操作1
    		(隐藏break操作)
    	case2:
    		操作2
    	......
    	default:
    		操作n
    }
    
    switch{
    	case 条件:
    		操作1
    	default:
    		操作n
    }
    
  8. 数组

  9. slice切片(可变长度数组)

    s:=make([]string,3)//创建切片,3为长度
    或s:=[]string{"a","b","c"}
    s=append(s,"d","e")//追加切片
    copy(目标切片,源切片)//拷贝切片
    len(s)//长度
    s[2:4]//左闭右开,[c,d]
    s[:4]//即s[0,4],[a,b,c,d]
    s[2:]//即s[2,len(s)],[c,d,e]
    
  10. map(无序)

    m:=make(map[key数据类型]value数据类型)
    或m:=map[key数据类型]value数据类型{键值对1,键值对2...}
    m[key]=value
    r,ok:=m[不存在的key]//r=0(int初始0),ok=false,ok用于接收key是否存在
    delete(m,key)//删除键值对
    
  11. range

    常用于遍历数组,slice和map

    //数组
    for index,value:=range s{
    	打印数组下标index,值value
    }
    //map
    for key,value:=range m{
        打印key,value
    }
    
  12. 函数

    func 函数名 (){
        //无返回值
    }
    
    func 函数名 (形参1 形参数据类型,形参2 形参数据类型...) 返回数据类型{
        return 值
    }
    
    func 函数名 (形参1 形参数据类型,形参2 形参数据类型...) (返回数据类型1,返回数据类型2...){
        return1,值2...
    }
    
  13. 指针

    func add1(n int){
        n+=1;
    }
    func add(n *int){
        *n+=1;
    }
    func main(){
        n:=5
        add1(n)//5
        add2(&n)//7
    }
    
  14. 结构体

    type user struct{
        name string
        password string
    }
    func main{
        user1:=user{name:"Tom",password:"123"}
        打印user1.name//Tom
    }
    
  15. JSON处理

    type user struct{
        Name string
        Password string
    }
    func main(){
        buf,err:=json.Marshal(json对象)//序列化,转化为[]byte
        打印buf
        打印string(buf)
    }
    
  16. 时间处理

    time.Now()//当前时间
    time.Date(2023,5,13,20,53,0,time.UTC)
    t.Formate("2006-01-02 15:04:05")//格式化
    t.Unix()//时间戳