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

42 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

基础入门

变量

  • 区别于C++、JAVA,Go使用的是var表示声明变量,将自动推断类型
    • 也可以通过var a int来显示声明类型
  • 赋值::=
  • 语句结束;

if-else

  • 无括号,但必须{}

for

  • 同样没有括号,但格式与c++类似
for {
}//表示死循环
for i<=3 {
}//没有分号
for n:=0;n<5;n++{
}

switch

  • 支持多种类型
  • 不用()
  • 每个case 后面不需要添加break

数组

  • 声明:
    • var a [5]int
    • b:=[5]int{1,2,3,4,5}
    • var twoD [2][3]int

切片

可变长数组,更常用

  • 声明
    • s:=make([]string,3)
    • `good :=[]string{"g","o","o","d","s"}
  • API
    • append(s,"1",...) 返回修改后的切片
    • copy(c,s)
  • 访问:支持像python的形式
    • s[2:5]
    • s[:2]

map

  • 声明
    • m:=make(map[string]int)
      • []是key类型,int是value类型
  • r,ok = map["unknown],ok表示是否有这个键值对
  • delete(map,key):删除键值对

range

m:=map[string]string{"a":"A","b":"B"}
for k,v:=range m{
}
for k:=range m{
}

函数

允许返回多个值,一般最后一个是 返回错误

func devide(a int, b int) (ans double, ok bool){
       
       return 
}
func add(a int, b int) int{
    return a+b
}

指针

作用有限,只用于传入参数时允许真实修改

结构体

type user struct{
    name string
    pwd string
}

func main(){
    a:=user{name:"wang",pwd:"123"}
    a:=user{"wang","123"}
        
    var d user
    d.name = "wang"
}

//普通函数
func checkPwd(u user, pwd string) bool{
    return u.pwd == pwd
}

//结构体函数--> 不可修改结构体内的变量
func (u user) checkPwd(pwd string) bool{
    return u.pwd == pwd
}

//结构体函数--> 可修改结构体内的变量-->结构体为指针类型
func (u *user) checkPwd(pwd string) bool{
    return u.pwd == pwd
}

错误处理

  • 导包:errors
func findUser(users []user, name string) (v *user, err error){
    for _,u:=range users{
        if u.name==name{
            return &u,nil
        }
    }
    return nil, errors.New("not found")
}
  • 空为:nil

字符串操作

image.png

  • 格式化方法

image.png

  • %v表示所有类型
  • %+v表示显示变量名
  • %#v表示显示类型

JSON处理

  • 变量名首个字母大写

image.png

  • 函数方法
    • buf,err := json.Marshal(a)
    • fmt.Println(string(buf))这样不会出现乱码,如果直接输出可能会出现乱码
    • err = json.Unmarshal(buf, &b)反编码
  • 名称
        type userInfo struct{
            Age int `json:"age"`
        }
    
    转换成json后将变量名Age转换成age

时间处理

now := time.Now()

image.png

数字解析

image.png

进程信息

image.png