从Hello world开始吧
搭建开发环境, 此处可Google
# 创建helloworld文件夹, 进入helloworld文件夹, 创建main.go文件
$ mkdir helloworld && cd $_ && touch main.go
package main
import (
"fmt"
)
func main() {
fmt.Print("Hello world!")
}
运行
# 运行main.go的代码
$ go run main.go
或者
# 构建hellowworld可执行文件
$ go build
$ ./helloworld
上注释
// go自带lint和format工具, 类似eslint和prettier, 统一了代码规范, 程序的可读性, 可维护性更强
// 包名, 如果是main, 从此处作为入口, 编译成可执行文件, 类似webpack配置的entry或者rollup配置的input
package main
// 引入go官方的包或者第三方的包, 引入多个包可写在括号里用逗号分隔, 编辑器可自动检测你需要引用什么包
import (
"fmt"
)
// 程序的入口, 没有参数和返回, func关键字声明函数, 同js中的function
func main() {
// 使用fmt包对外暴露的Print方法, 注意P大写, 字符串必须用双引号, 单个字符才能用单引号
fmt.Print("Hello world!")
}
变量
语法规则
- 可用var关键字声明变量, 同js
- 变量命名规范同js, 只能包含字母数字下划线, 不能以数字开头
- 可批量命名, 用括号括起来, 用逗号分隔, 同批量引入包
- 命名变量后必须定义类型, 或者由赋值推导类型
- 命名后如果不赋值, 默认为该变量类型的零值
- 函数内部声明的变量必须使用, 不然会报错, 函数外声明的全局变量不使用不会报错但是不推荐
- 同一作用域内不能重复命名
// 批量声明变量
var (
name string // ''
age int // 0
isOk bool // false
a0 = "hello" // 类型推导为string, 注意字符串不能用单引号
a1, a2 = 1, 0 // 同时声明和赋值多个变量
a1 = 1 // 重复命名, 报错
a3 // 未定义类型, 报错
)
简短变量声明
在函数体内部可使用:=声明变量
str := "Hello world!"
fmt.Print(str)
a1, a2 := 0, 1
fmt.Print(a1, a2)
匿名变量
因为go中函数可以返回多个值, 某些情况下我们只需要使用其中一部分值, 这种场景可使用匿名变量, 即下划线_
func ret3string() (string, string, string) {
return "res1", "res2", "res3"
}
func main () {
s1, _, _ := ret3string() // _ 匿名变量, 不占用内存和命名空间, 不会产生重复声明
fmt.Print(s1)
}
常量
常量即在程序的运行期间内不会改变的量
语法规则
- 用const关键字声明常量, 同js
- 可批量声明, 用逗号隔开
- 批量声明时, 如果某一行没有赋值, 则和上一行的值一样
const (
a1 = 1
a2 // 默认和上一行的值一样, 即a2的值也
)
iota
- iota为常量计数器, 类似ts中的enum
- const关键字出现时, iota被重置为0
- const中, 没新增一行, iota += 1
const (
b1 = iota // iota为0
b2 // iota为1, b2等于b1
b3 = 1 // iota为2
_ = iota // iota为3
b4 // iota为4, b4等于iota, 也为4
b5, b6 = iota + 1, iota + 2 // iota为5
b7, b8 = iota + 1, iota + 2 // iota为6
)
iota的应用
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!