基本语法
变量声明
方式一:使用 var 关键字
go
var name string = "Go语言"
var age int = 20
var isTrue bool = true方式二:短变量声明(仅在函数内)
go
name := "Go语言"
age := 20
isTrue := true提示
短变量声明 := 只能在函数内部使用,函数外部必须使用 var 关键字。
方式三:批量声明
go
var (
name string = "Go语言"
age int = 20
isTrue bool = true
)变量零值
如果声明变量但不赋值,Go会赋予零值:
go
var i int // 0
var f float64 // 0.0
var s string // ""(空字符串)
var b bool // false常量
基本常量
go
const PI = 3.14159
const NAME string = "Go"批量声明常量
go
const (
StatusOK = 200
StatusError = 500
)iota 常量生成器
go
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
Wednesday // 3
Thursday // 4
Friday // 5
Saturday // 6
)
// 位运算示例
const (
Read = 1 << iota // 1
Write // 2
Execute // 4
)数据类型
基本数据类型
| 类型 | 描述 | 零值 |
|---|---|---|
bool | 布尔类型 | false |
string | 字符串类型 | "" |
int | 整型(根据系统32或64位) | 0 |
int8 | 8位整型 | 0 |
int16 | 16位整型 | 0 |
int32 | 32位整型 | 0 |
int64 | 64位整型 | 0 |
uint | 无符号整型 | 0 |
float32 | 32位浮点型 | 0.0 |
float64 | 64位浮点型 | 0.0 |
byte | 字节类型(uint8别名) | 0 |
rune | Unicode字符(int32别名) | 0 |
完整示例
go
package main
import "fmt"
func main() {
// 布尔类型
isTrue := true
// 字符串类型
str := "Hello, Go!"
// 整型
num := 100
// 浮点型
pi := 3.14159
// 字节类型
b := byte('A')
// Unicode字符
r := rune('中')
fmt.Printf("布尔值: %t\n", isTrue)
fmt.Printf("字符串: %s\n", str)
fmt.Printf("整数: %d\n", num)
fmt.Printf("浮点数: %f\n", pi)
fmt.Printf("字节: %c\n", b)
fmt.Printf("Unicode: %c\n", r)
}类型转换
Go不支持隐式类型转换,必须显式转换:
go
var i int = 100
var f float64 = float64(i) // int -> float64
var u uint = uint(i) // int -> uint
// 字符串转换
import "strconv"
numStr := strconv.Itoa(123) // int -> string
num, _ := strconv.Atoi("123") // string -> int
f, _ := strconv.ParseFloat("3.14", 64) // string -> float64变量作用域
go
package main
import "fmt"
var globalVar = "全局变量" // 包级别变量
func main() {
localVar := "局部变量" // 函数级别变量
if true {
blockVar := "块级变量" // 块级别变量
fmt.Println(globalVar, localVar, blockVar)
}
// fmt.Println(blockVar) // 错误:超出作用域
}