2023清华大学go学习笔记

文章目录

  • 简介
  • 一、go简介
    • 工具介绍:
    • 开发环境搭建
  • command-line-arguments
    • 问题
  • 二、基本变量与类型
    • 变量与数据类型
  • 解决问题
    • 变量2
  • 源码、补码、反码的知识
  • 整数类型
  • 报错uint8
    • 浮点型
  • 三、运算符
    • 关系
    • 逻辑运算符
    • 其他运算符
      • 问题
  • 四、流程控制
    • 分支结构
      • if单分支结构
      • if双分支结构
    • if多分支
        • 问题
    • switch分支
        • 问题 待解决
    • for循环
  • 五、函数
    • 函数的定义和调用
    • 函数细节详讲1
    • 详解2
      • 代码报错
    • 详解3
      • 问题1
      • 问题2
    • 包的引入
      • 问题 待解决
    • 包细节讲解
  • 六、错误处理
    • 自定义错误
  • 七、数组
    • 数组的引入
    • 数组内存分析
    • 数组的遍历
    • 数组注意事项
    • 注意事项
    • 二维数组
    • 二维数组的遍历
  • 八、切片
    • 切片的内存分析
    • 切片的定义
    • 切片的遍历
    • 切片的注意事项
  • 九、映射
    • map的引入
    • map的创建
    • map的操作
  • 十、面向对象
    • 引入
    • 结构体
    • 内存分析
    • 结构体实例的创建
    • 结构体之间的转换
    • 方法的注意事项
  • 其他
    • defer
    • struct基本定义与使用
    • 面向对象
      • 封装
    • 继承
    • 多态的实现与基本要素
      • 基本要素:
      • interface
        • .\9.go:8:13: fmt.Println is not a type
    • 创建goroutine
    • channel的基本定义
      • 有缓存的channel
    • channel的关闭特点
      • channel与select
    • 实战
  • 十一、项目实战——Golang搭建即时通信系统IM-System
    • 1、基本功能
    • 2、简要介绍
      • 2.1系统结构如下
      • 2.2目录结构
      • 2.3其他说明
    • 3、代码
    • 4、效果演示
      • 4.1 源码编译
      • 4.2 启动


简介

go(又称Golang)

应用领域:
go服务器
go分布式/云计算
区块链工程师

360开源的日志搜索系统 qihoo360/poseidon

一、go简介

  1. 开发团队:
    罗伯特·格瑞史莫(Robert Griesemer),罗勃派克(Rob) Pike)及肯·汤曾逊(Ken Thompson)于2007年9月开始设计Go,稍后lan LanceTaylor、Russ Cox0入项目.
    Rcoect CicepeeneR9D Pae
  2. Go语言发展简史
    2007年,谷欧工程师Rob Pike,Ken Thompson和Robert Grisemer开始设计一门全新的语言,这是Go语言的最初原型.2009年11月,Google将Go语言以开故源代码的方式向全球发布.
    2015年8月,Go1.5版发布,本次更新中移除了"最后残余的c代码”2017年2月,Go语言Go 1.8版发布。
    2017年8月,Go语言Go 1.9版发布。2018年2月,Go语言Go1.10版发布.
    2018年8月,Go语言Go1.11版发布。
    2019年2月,Go语言Go1.12版发布.
    2019年9月,Go语言Go1.13版发布.
    2020年2月,Go语言Go1.14版发布。
    2020年8月,Go语言Go1.15版发布。_一直选代

工具介绍:

  1. visual studio code,Microsoft产品(简称VSCode);一个运行于Mac Os、Wndows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言劫件,还可以支持智能提示,编译运行等功能.
  2. Sublime Text,可以免费使用,默认也支持Go代码语法高亮只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别
  3. Vim: Vim是从vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用4)Emacs : Emacs传说中的神器,她不仅仅是一个偏辑器,因为功能强大,可称它为集成开发环境
    5)Eclipse IDE工具,开源免费,并提供GoEclipse播件
  4. Lite1DE,LitelDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是中国人开发的.7) JetBrains公司的产品:PhpStrom、webStrom和PyCharm等IDE工具,都需要安装Go插件。
    【2] vSCode的安装:
    下就vscode安装软性
    https://code.visualstudio.com/download

开发环境搭建

【1】搭建Go开发环境-安装和配置SDK基本介绍;
1 SDKE全格ASoftware Devetopment雹&警寺兹莽于晶窖zA)
【2] sDK下载
1)Go语言的官网为: golang.org ,无法访问,需要.
2) SDK下裁地址;Golang中文社区: https://studygolang.com/dl (1.15.6版本)外网下载
【3】安装SDK:
清注意:安装路径不要有中文或者特殊符号如空格等
SDK安装目录建议:一般我安装在d:/golang安装时,基本上是俊瓜式安装,解压就可以使用

dos命令
清屏:cls
dir 显示详细信息
c: 切换盘符
md 创建目录
rd 删除目录
copy 1.txt a\1.txt 复制文件
https://dl.google.com/go/g01.15.6.windows-amd64.zip

环境变量——path——新增
D:\golang_sdk\go\bin

2023清华大学go学习笔记_第1张图片

package main  //声明整个文件所在的包,每个go文件必须有归属的包
import "fmt"  //引入程序要用的包
func main(){
    //main 程序的入口
	fmt.Println("HELLO guiltyfet")  //控制台打印输出一句话,双引号的内容原样输出
}

D:\goproject\src\gocode\xm1\main>go build test1.go

command-line-arguments

.\test1.go:4:2: cannot refer to unexported name fmt.println
.\test1.go:4:2: undefined: fmt.println

将小写改成大写的就可以了 “p"→”P“

2023清华大学go学习笔记_第2张图片

问题

D:\goproject\src\gocode\xm1\main>go build test1.go
command-line-arguments
.\test1.go:3:6: func main must have no arguments and no return values
.\test1.go:3:6: missing function body
.\test1.go:4:2: cannot refer to unexported name fmt.printIn
.\test1.go:4:13: syntax error: unexpected (, expecting comma or )
.\test1.go:6:1: syntax error: non-declaration statement outside function body

三点错误{
   }
小p变大p
println     Ln

二、基本变量与类型

变量与数据类型

[1】交量的引入:一个程序就是一个世界
不论是使用哪种高级程序语言编写程序变量都是其程序的甚本组成单位,[2】变量的介绍:
安量相当于内存中一个数据存储空间的表示
I
【3】姿量的使用步骤;
1.声明
2赋值
3.使用

设置——取消勾选,展示层级
2023清华大学go学习笔记_第3张图片问题

解决问题

go build main.go 运行时报错如下:
main.go:1:1: expected ‘package’, found ‘EOF’

解决:ctrl+s保存下就可以了

#command-line-arguments
.\main.go:4:6: missing function body
.\main.go:4:10: invalid character U+FF08 ‘(’ in identifier
.\main.go:4:13: invalid character U+FF09 ‘)’ in identifier
.\main.go:4:16: syntax error: unexpected {, expecting (
.\main.go:6:2: syntax error: unexpected var, expecting )
.\main.go:13:1: syntax error: non-declaration statement outside function body
2023清华大学go学习笔记_第4张图片

2023清华大学go学习笔记_第5张图片

2023清华大学go学习笔记_第6张图片

2023清华大学go学习笔记_第7张图片

package main
import "fmt"

func main(){
   
	//变量的声明s
	var age int
	//变量的赋值
    age = 18
	//变量的使用
	fmt.Println("age = ",age);
	
	//声明和复制可以合成一句,
    var age2 int = 19
	fmt.Println("age2 = ",age2);
	
	//var age int =20;
    //fmt.Println("age = ",age);

    /*变量的重复定义会报错;
    //.\main.go:16:6: age redeclared in this block
    //previous declaration at .\main.go:6:6
    //.\main.go:17:1: invalid character U+00A0 in identifier
    //.\main.go:17:4: syntax error: unexpected   at end of statement
	*/

	//不可以在赋值的时候给与不匹配的类型
	var num int =12.5
	fmt.Println("num = ",num);
}

变量2

2023清华大学go学习笔记_第8张图片
2023清华大学go学习笔记_第9张图片
2023清华大学go学习笔记_第10张图片
2023清华大学go学习笔记_第11张图片
2023清华大学go学习笔记_第12张图片
(S】八进转换为十六进制
把十进制当做一个中转站:八进制—》十进制—》十六进制
实际上根本不用自己转换这么麻烦:│
2023清华大学go学习笔记_第13张图片

源码、补码、反码的知识

整数类型

2023清华大学go学习笔记_第14张图片
写代码时注意使用英文的括号与花括号

2023清华大学go学习笔记_第15张图片

2023清华大学go学习笔记_第16张图片

package main
import "fmt"

func main(){
   
	//定义一个整数类型
	var num1 int8 = 120
	fmt.Println(num1)
	
	var num2 uint8 = 200
	fmt.Println(num2)
	
	var num3 = 20
	//printf函数的作用,格式化,把num3的类型填充到%T的位置上
	fmt.Printf("num3的类型是,%t" ,num3)

}


2023清华大学go学习笔记_第17张图片

报错uint8

2023清华大学go学习笔记_第18张图片
D:\goproject\src\gocode\xm1\unit2\demo3>go run main.go
command-line-arguments
.\main.go:9:11: undefined: unit

浮点型

2023清华大学go学习笔记_第19张图片

PS:底层存储空间和操作系统无关
PS:浮点类型底层存储:符号位+指数位+尾数位,所以尾数位只是存了一个大概,很可能会出现精度的损失。

package main
import "fmt"

func main(){
   
	//定义浮点类型的数据:
	var num1 float32 = 3.14
	fmt.Println(num1)
	//可以表述正浮点数,也可以表示负的浮点数
	var num2 float32 = -3.14
	fmt.Println(num2)
	//浮点数可以用十进制表示形式,也可以用科学计数法表示形式  E大写小写都可以的
	var num3 float32 = 314E-2
    fmt.Println(num3)
	var num4 float32 = 314E-2
	fmt.Println(num4)
	var num5 float32 = 314E+2
	fmt.Println(num5)
	var num6 float32 = 314E+2
	fmt.Println(num6)

	var num7 float32 = 256.00000916
	fmt.

你可能感兴趣的:(golang,学习,笔记)