开始学Go, 做个笔记

 

1. go 和 c++\c一样是编译型的,但是优点是go有解释型语言的特性,垃圾回收;在编制go代码的时候,编译器自动把垃圾回收部分编译进去了(编译就是翻译成CPU执行的机器语言)。

2. go是oop开发模式的语言,但是它的oop是简化了的,没有class概念,是struct+相关的函数,类似c语言。没有泛型,没有构造函数,没有继承;

3. go原生支持并发,goroutines表示并发任务,channels用来任务间通信,select用来任务同步

4. go的工作空间,一个工作空间下可放多个项目

 

 

go也有package的概念

main package是程序入口,编译main得到可以运行的可执行文件

 

 

 

5. import 是引入别的package,在build的时候从GOROOT和GOPATH里找package

6. go自带的一些命令,

go build编译的, go doc看文档的, go fmt格式化代码的,go get 下载package并且安装, go list 列出所有已安装的package

go run 编译+执行, go test测试 执行以_test.go结尾的文件

 

7. go的函数和变量的命名规则或者限制,基本和python、c等其他语言一样

变量必须声明其类型,例如Integer、Floating point,Strings(字节串),编译器要提前知道变量类型,因为要将变量适用的不同的方法编译成机器语言

 

 8. 变量的类型可以设置别名,用type,声明以后就可以用别名来声明变量。

 

 变量初始化,可以直接写,也可以省略类型,让编译器自己推断。没声明就是0或者空值

 

在函数内部,还可以用x := 100 这种简写方式声明变量

 

 9. vs code 安装go插件失败

VSCode安装GO插件失败解决方案
在 VSCode 中安装 Go 插件总提示失败:The "go-outline" command is not available. Run "go get -v github.com/ramya-rao-a/go-outline"to install ..

GO插件的安装需要访问外网,导致插件下载失败,通过设置GO的代理访问到插件下载源即可

#控制台执行命令
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
重新启动VSCode,重新安装即可
10.go和c语言类似,有指针。&是取地址,*是从地址取值

var ip *int;

ip = &x;

y = *ip;

new函数,创建一个变量,然后返回变量的地址,例如

ptr := new(int)

*ptr = 3; 创建一个int变量,ptr是其指针,然后通过*赋值

11. 变量的影响范围(获取范围)和c或者python一样,用block的概念,block就是一对{ }里面的,或者一个函数 或者一个文件 或者一个package

12. 和内存相关的两个概念

堆和栈

堆是用来保存函数调用时需要的内存,例如函数里的临时变量

 

函数调用结束,stack内存自动释放, heap需要手动释放,堆是持久的

 

 

 

 例如C语言

x = malloc(32);

 

 

free(x)

13. 垃圾回收一般都需要解释器

 

但是go是一中带有垃圾回收的编译型语言,确定是稍微慢了一点相对c

 

 

 

 

 14. 整型

 

 

15. 类型转换

 

16。浮点数

 

 

 17。 字符串

ascii码只有128个(8位,256个但是128个表示了其他的)

unicode有32位,unicode的子集utf8和ascii一样

string类型是只读的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 18. 常量 编译的时候才知道值

iota类似于c语言的枚举

 

 

 

 

 

 

19。 程序运行控制, 控制流

 

 

 

 

 

 

 

20. 数组

 

 

 

 

 21. 切片 slices 也是一种数据类型

 

 

 

 

 

 

 

 

 

 

 

 

 创建一个slice或者数组

给slice里增加数据

 

 

 22 哈希表 hash tables

 

 

 

 

 

 

 

 

 

 

 

 23. maps

map就是go里面的哈希表的实现

 

 

 

 

 

 

 

 

 

 

 

 id是取到的value,p是true或者false 看这个key是否存在

 

 

 

 24. 结构体 structs 和c c++里的一样

type Person struct {
fname string
lname string
}

 

 

 

 

 

 

 

 

 

 

 

 

 这里是大括号 不是小括号

 25。 json的优点

 

marshalling

  

 

 byte array

 

 26 文件

 

 

 

ioutil提供基本文件读写功能,大文件不能用这个

 

 

 os包也提供了文件接口

 

 

 

 

 

posted @ 2022-10-27 23:04  import_SOBER  阅读(32)  评论(0编辑  收藏  举报