Go基础 | 青训营笔记

93 阅读3分钟

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

一、重点内容:

  • Go 语言学习背景介绍

  • Go 语言基础语言详细讲解

    1. 开发环境
    2. 基础语法
    3. 标准库

二、详细知识点介绍:

  • Go特点

    1. 高性能、高并发
    2. 语法简单、学习曲线平缓
    3. 丰富的标准库
    4. 完善的工具链
    5. 静态链接
    6. 快速编译
    7. 跨平台
    8. 垃圾回收
  • 使用Go语言的公司:字节跳动;腾讯;美团;弟弟;百度;谷歌;脸书;七牛云;哔哩哔哩;pingcap;

  • 字节跳动为什么全面拥抱 Go 语言

    1. 最初使用的 Python,由于性能问题换成了 Go
    2. C++ 不太适合在线 Web 业务
    3. 早期团队非 Java 背景
    4. 性能比较好
    5. 部署简单、学习成本低
    6. 内部 RPC 和 HTTP 框架的推广
  • 老师迅速过了一遍基础语法,但是我对于go语法还是不熟悉,看了网上的课,做了一些语法笔记

  • hello

  1. add configuration: goland Add Configurations 配置 - 新Sir - 博客园 (cnblogs.com)
  2. package程序的入口包;import导入包
  3. 终端:go run 文件地址 :运行 ; go build 文件地址 :编译再运行
  4. fmt包 输入输出字符串,格式化字符串。
  5. fmt.PrintLn Print意为打印;Ln意为换行
  6. 如果遇到报错“package …… is not in GOROOT” 解决方法:go env查看环境,发现GO111MODULE是空的,要把它改成off:go env -w GO111MODULE=off
  7. 注释:单行:/ code / 多行: /* code */
  • var
  1. 变量声明 var 变量名字 变量类型 var:声明变量关键字
  2. 把类型放在变量名字之后的好处:避免含糊不清的声明。比如指针类型。在C语言中 int *a,b b不是指针,在go中 var a,b *int即可都是指针
  3. 利用括号可以批量定义变量。
var(
   name string 
   age int     
   addr string
)
  1. 如果没有给变量赋初始值,变量会有默认值: 整型:0 ;浮点型:0.0 ;字符串: 空字符串 ; 布尔型: false ;切片、函数、指针: nil
  2. 声明方法2: name := "Jiao" Go语言的推导声明写法,编译器会根据右侧类型判断左值类型。
  3. fmt.Printf("%T", a) 打印a的类型。
  4. fmt.Printf("%p",&name) 内存地址
  5. b,a=a,b 交换a,b
  6. _ 匿名变量,任何赋给这个标识符的值都会被抛弃,eg:
func test() (int,int){
    return 100,200
}
func main(){
    a,_:=test() //抛弃200,a是100
    _,b:=test() //抛弃100,b是200
    fmt.Print(a,b) 
}
  1. 常量:const name type = "value1" type可以省略
  2. iota: 特殊常量。
const(
   a=iota //0
   b //每新增一行常量将使iota计数一次 b即1
   
)
  1. 类型转换: b:= type(a) 整型不能转换为bool类型。
  • 运算符
  1. 算术运算符: + - * / % ++ --
  2. 关系运算符: == != > < >= <=
  3. 逻辑运算符:&& || !
  4. 赋值运算符:= += -= *= = %= <<= >>= &= ^= |=
  5. 位运算符: & | ^ &^ << >>
位运算符表达含义
&全一为一,其余为零
|全零为零,其余为一
^不同为一,相同为零
&^a&^b,对于b,如果为0,则取a;若为1,取0
<<乘以2的n次方
>>除以2的n次方
  • 键盘输入输出
fmt.Scanln(&x,&y) //获取一行的输入,只会获取到一行
fmt.Scanf("%d",&x)  //可以指定格式;几个数可以空格分隔或换行分隔。
fmt.Scanln(&x,&y) //只会获取一行的输入
  • 流程控制
  1. 顺序结构:从上到下,逐行执行;
  2. 选择结构:if,switch,select
  3. 循环结构:for

if后不需要括号,if {} else {} , if {} else if {} else {}

switch不需要break,使用fallthrough可以强制执行后面的case(不管条件是否满足) break终止穿透。

for

break跳出当前循环,continue退出执行下一次循环。

三、引用参考:

  • b站【狂神说】Go语言零基础学习视频