Z
ZHANK
编程在线教程Go 教程基本类型与转换
入门基础

基本类型与转换

int/float/string/bool、类型转换(显式)、rune/byte 别名

基本类型与转换

Go 的类型系统严格——没有隐式类型转换,int 和 int64 是不同类型。但这消除了大量隐蔽 bug。

学完本章你将: 掌握 int/float/string/bool、显式类型转换、rune/byte。


基本类型

go
package main

import "fmt"

func main() {
    // 整数(有符号)
    var i int = 42        // 平台相关(32 或 64 位)
    var i8 int8 = 127     // -128~127
    var i64 int64 = 100000

    // 无符号整数
    var u uint = 42
    var b byte = 255      // byte = uint8
    var r rune = '中'     // rune = int32(Unicode 码点)

    // 浮点
    var f32 float32 = 3.14
    var f64 float64 = 2.718281828

    // 字符串
    var s string = "Hello, 世界"

    // 布尔
    var ok bool = true

    fmt.Printf("i=%d, f64=%.2f, s=%s\n", i, f64, s)
}

显式类型转换(必须!)

go
var a int = 10
var b float64 = float64(a)  // ✅ 显式转换
// var b float64 = a        // ❌ 编译错误!不能隐式转换

var c int64 = 100
var d int = int(c)           // 即使 int 和 int64 也要显式转

// 字符串 ↔ 数字
num, _ := strconv.Atoi("42")         // string → int
str := strconv.Itoa(42)              // int → string
f, _ := strconv.ParseFloat("3.14", 64) // string → float64

类型别名

go
type UserID int64    // 定义新类型
type Age = int       // 类型别名(完全等价)

var uid UserID = 100
// var x int = uid   // ❌ 新类型不能直接赋值
var x int = int(uid) // ✅ 需要显式转换