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
的 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日志!
评论