Hello GoLang
执行 Go 命令
- 运行
go version得到go version go1.xx.x linunx/amd64
创建 Hello 项目
pwd得到/workspaces/oh-my-envmkdir 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的 while(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日志!
评论




