Hello GoLang
执行 Go 命令
- 运行 go version得到go version go1.xx.x linunx/amd64
创建 Hello 项目
- pwd得到- /workspaces/oh-my-env
- mkdir hello; code hello得到新窗口,关闭旧窗口
- go mod init github.com/frankfang/hello用于初始化目录
 如果没有看到- go.mod,点击- Refresh Explorer
- 创建 main.go
- go build . && ./hello你也可以用- go run .代替这两句话
创建 main.go
println 函数不常用,可以用 fmt.Println, 输入 fmt.pl 即可补全
运行 go run .
编译到 Windows 命令
Go 语法
变量
:= 反而不能指定了类型, 但是用的人更多
自己测试
常量
猜猜结果
iota 总结
iota 即希腊字母 ι
- iota是其英文发音
- GoLang中- iota默认为- 0,每行加- 1
- 使用 iota可以减少hard code(写死的代码)
- 只能用在 const ()中
- 每个 const都会重置
for 循环
for 循环特点
跟 JS 不一样的地方
- 不加 ( ),加了会被删
- for接- 0个表达式等价于- JS的 w- hile(true)
- for接- 1个表达式等价于- JS的- while(condition)
- for接- 3个表达式等价于- JS的- for(初始化, 判断, 后续)
if else
if else 特点
跟 JS 不一样的地方
- 推荐不加 ( )
- if接一个表达式等价于- JS的- if(condition)
- if接两个表达式没有等价的- JS常见写法
switch case
switch case 判断类型
switch case 特点
与 JS 不一样的地方
- 不推荐加 ( )
- 不要加 break
- 一个 case可以有多个值,用逗号隔开
函数
- 函数里面不能声明有名字的函数
自己练习
可变参数函数
匿名函数
函数特点
与 JS/TS 不一样的地方
- 返回值可以提前定义名字,return可缩写
 -numbers ...int表示多个int参数组成的数组
- 立即执行函数不需要 Hack
数据类型
简单值类型
- 数字(14种):int32、float64
- 字符串
- 布尔
复杂值类型
- 结构体(struct)
- 数组(定长):[3]int
引用类型
- 指针:*int
- 切片:[]int
- 哈希表:map[string]int
- 函数
- 通道:chan int
- 接口:interface {}
值类型
- 该类型的变量直接存放值
结构体
自己练习
把结构体当做参数
实在要改的话可以这样改
* 与 &
用于类型
- var a *int表示- a存- int的地址
- 此时称 a为指针
用于值
- &b表示- b的地址
- *c表示指针- c对应的值
讲师: 我个人认为,用 var a &int 表示 a 存 int 的地址,更符合语义
把结构体当做参数2
结构体的特点
与 JS 的不同之处
- 结构体是值类型,不是引用类型,不能与 JS的对象进行类比
- Go只支持传值,不过可以把地址当做值- modify(&p1)
- 结构体支持 label,用于各种功能;JS没有label
结构体变字符串
数组(定长)
自己练习
数组特点
不怎么用到数组, 不怎么关注就行了
与 JS 的不同之处
- 数组是值类型,不是引用类型,不能与 JS的数组进行类比
- 数组长度是固定的
- 可以用 len(a)获取数组的长度,而不是a.length
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZkeqのCoding日志!
 评论





