2、golang入门-变量和常量
一、变量
1. 变量的声明
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。
全局变量是允许声明但不使用,局部变量声明不使用会报错
var name string
var age int
var isOk bool
// 批量声明
var (
a string
b int
c bool
d float32
)
2. 变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如:
- 整型和浮点型变量的默认值为0。
- 字符串变量的默认值为空字符串。
- 布尔型变量默认为false。
- 切片、函数、指针变量的默认为nil。
var name string = "Q1mi"
var age int = 18
// 类型省略
// 编译器会根据等号右边的值来推导变量的类型完成初始化
var name = "Q1mi"
var age = 18
// 一次初始化多个变量
var name, age = "Q1mi", 20
package main
import "fmt"
var m = 200
func main() { // main函数,是程序执行的入口
n := 10
m := 100
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
fmt.Println(m, n)
fmt.Println("Hello World!") // 在终端打印 Hello World!
}
func foo() (int, string) {
return 10, "hello"
}
注意事项:
- 函数外的每个语句都必须以关键字开始(var、const、func等)
:=
不能使用在函数外。_
多用于占位,表示忽略值。
package main
var x, y int
var ( // 这种因式分解关键字的写法一般用于声明全局变量
a int
b bool
)
var c, d int = 1, 2
var e, f = 123, "hello"
//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"
func main(){
g, h := 123, "hello"
// 0 0 0 false 1 2 123 hello 123 hello
println(x, y, a, b, c, d, e, f, g, h)
}
// 交换变量 两个变量的类型必须是相同。
a, b = b, a,
// 空白标识符 _ 也被用于抛弃值,如:
_, b = 5, 7
二、常量
常量在定义的时候必须赋值。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
const pi = 3.1415
const e = 2.7182
const (
pi = 3.1415
e = 2.7182
)
// const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
n1 = 100
n2
n3
)
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。
package main
import "fmt"
func main() {
const LENGTH int = 10
const WIDTH int = 5
var area int
const a, b, c = 1, false, "str" //多重赋值
area = LENGTH * WIDTH
fmt.Printf("面积为 : %d", area) // 面积为 : 50
println()
println(a, b, c) // 1 false str
}
三、iota
iota
在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota
计数一次(iota可理解为const语句块中的行索引)。
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
// 使用_跳过某些值
const (
n1 = iota //0
n2 //1
_
n4 //3
)
//iota声明中间插队
const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
//一行定义多个值
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
参考文档:
1. https://www.liwenzhou.com/posts/Go/01_var_and_const/
2. https://www.runoob.com/go/go-variables.html
posted on 2022-04-20 21:44 不出世不入世什么都不是 阅读(36) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现