go入门 | 青训营笔记

32 阅读2分钟

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

一、本堂课重点内容:

  1. 变量
  2. 数组
  3. 字符串
  4. 切片
  5. 函数
  6. 错误
  7. 结构体
  8. 指针

二、详细知识点介绍:

  • 变量的定义
  • 函数的用法
  • 指针和结构体
  • 错误

三、实践练习例子:

  • simpledict的小项目挺有意思

四、课后个人总结:

  • 包名和函数名要一样

  • 赋值时的类型推导,:= 可省略定义类型

  • 变量类型后置

  • var定义变量 , var name type | var name = value

  • 字符串支持+连接操作

  • 常量定义 const name = value

  • 支持break,continue语法

  • 数组定义 var name []type ex: var a []int 数组不可变 Slice底层:存储容量,长度,和指向数组的指针,所以对slice操作完必须赋值回原数组

  • 切片不支持负数索引

  • 可以不用定义,直接创建,语法 make(),创建切片 make([]type, length)

  • 方法直接调用,copy(),len()

  • if,for等语句不需要括号,直接写条件

    • if 关键字后面,可以跟多个语句,用分号切开
  • map[key type]value type{}

  • range快速遍历 map m for k := range m { fmt.println("key:",k)} for k,v := range m { fmt.println("key:",k,"value:",v)} map 遍历完全无序,随机

  • 函数定义func name(variable name, ...) returnType { body }

  • 指针: 用途: 对参数进行修改,作用域的问题,golang的变量定义应该不是引用类型的

  • 结构体 struct

        name string
        password string
    }```
    - 访问和修改用. , 结构体传参要用指针
    - 类成员函数,`func (struct name) funcName(参数) returnType {}`
        带指针,能修改; 不带指针不能修改
        
    
  • 错误处理:使用一个单独的返回值来传递错误信息

    • import "error"
    • 能知道哪个函数出现了错误
    • 能用 if else 返回错误
    • nil是空, errors.New("not found")
  • 字符串操作,不是字符串对象调用去调用方法的形式,而是strings.method(object,...)

    • 格式化输出,printf是%语法 ,println是逗号语法
    • 处理json,结构体公开字段的首字母都是大写的,就能JSON.marshaler去序列化,变成json字符串
    • 语法:json.method(object, ...) , 传结构体记得取地址
  • 数字解析: import "strconv" ,两个返回值(处理结果,error)

    • strconv.ParseInt(), Atoi,itoA 数字和字符串的互相转化