Go语言学习系列——基础语法——【坚果派-红目香薰】

作者简介:大数据领域优质创作者、CSDN博客专家 、阿里云博客专家、华为云课堂认证讲师、华为云社区云享专家、坚果派社区成员、具有10余年横向开发经验,全国教师技能大赛获奖教师,现从事于大学计算机领域教育工作。

主要内容:人工智能与大数据、Java、Python、C#、PHP、ASP.NET、ArkTS、FAQ、简历模板、学习资料、面试题库、就业指导等。

初心目标:持续输出,为技术人创造更多的价值。

团队:坚果派

社区地址:坚果派社区

坚果派由坚果等人联合创建,团队拥有12个华为HDE,以及若干其他领域的三十余位万粉博主运营。 专注于研究的技术包括OpenHarmony,ArkUI-X,元服务,鸿蒙原生应用、仓颉,AI、BlueOS操作系统等。已上架鸿蒙原生应用18款,三方库72个。 主营业务是面向国内外客户提供新一代信息技术为核心的产品、解决方案和服务。团队聚焦“鸿蒙原生应用”、“智能物联”和“AI赋能”、“人工智能”四大业务领域,依托华为开发者专家等强大的技术团队,以及涵盖需求、开发、测试、运维于一体的综合服务体系,赋能文旅、媒体、社交、家居、消费电子等行业客户,满足客户数字化升级转型的需求,帮助客户实现价值提升。

目录

Go语言学习系列——基础语法——【坚果派-红目香薰】

1、变量声明与初始化

2、基本数据类型

3、类型转换

强化练习内容

数据类型取值区间表


Go语言学习系列——基础语法——【坚果派-红目香薰】

语法说明:

- 变量声明后必须使用
- 类型转换必须显式进行
- 不同类型变量不能直接运算
- 变量名区分大小写
- 类型转换可能会损失精度

1、变量声明与初始化

package main

import "fmt"

func main() {
    // 1. 标准声明
    var name string = "张三"
    var age int = 25
    
    // 2. 类型推断
    var salary = 12000.50  // 自动推断为float64
    
    // 3. 简短声明
    height := 175.5
    isStudent := true
    
    // 4. 多变量声明
    var (
        city    string = "北京"
        country string = "中国"
        score   int    = 90
    )
    
    // 5. 多变量简短声明
    x, y := 100, 200

    // 打印变量
    fmt.Printf("姓名:%s\n", name)
    fmt.Printf("年龄:%d\n", age)
    fmt.Printf("薪资:%.2f\n", salary)
    fmt.Printf("身高:%.1f\n", height)
    fmt.Printf("是否学生:%t\n", isStudent)
    fmt.Printf("城市:%s\n", city)
    fmt.Printf("国家:%s\n", country)
    fmt.Printf("分数:%d\n", score)
    fmt.Printf("x=%d, y=%d\n", x, y)
}

示例效果:

2、基本数据类型

示例代码:

package main

import "fmt"

func main() {
    // 数值类型
    intNum := 42                // 整数
    floatNum := 3.14           // 浮点数
    
    // 字符串类型
    str := "Hello Go"          // 字符串
    char := 'A'                // 字符(rune)
    
    // 布尔类型
    isTrue := true             // 布尔值
    
    // 打印数值类型
    fmt.Println("数值类型示例:")
    fmt.Printf("整数: %v, 类型: %T\n", intNum, intNum)
    fmt.Printf("浮点数: %v, 类型: %T\n", floatNum, floatNum)
    
    // 打印字符串类型
    fmt.Println("\n字符串类型示例:")
    fmt.Printf("字符串: %v, 类型: %T\n", str, str)
    fmt.Printf("字符: %v, 类型: %T\n", char, char)
    
    // 打印布尔类型
    fmt.Println("\n布尔类型示例:")
    fmt.Printf("布尔值: %v, 类型: %T\n", isTrue, isTrue)
    
    // 等待用户输入后退出
    fmt.Println("\n按回车键退出...")
    fmt.Scanln()
}

示例效果:

3、类型转换

示例代码:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    // 数值类型转换
    var a int = 100
    var b float64 = float64(a)    // int转float64
    var c int64 = int64(b)        // float64转int64
    
    // 字符串转换
    var d string = strconv.Itoa(a)      // int转string
    var e string = fmt.Sprintf("%f", b)  // float转string
    
    // 字符串转数值
    f, _ := strconv.Atoi(d)             // string转int
    g, _ := strconv.ParseFloat(e, 64)    // string转float64
    
    // 打印结果
    fmt.Printf("整数:%d\n", a)
    fmt.Printf("转换为float64:%f\n", b)
    fmt.Printf("转换为int64:%d\n", c)
    fmt.Printf("转换为string:%s\n", d)
    fmt.Printf("float转string:%s\n", e)
    fmt.Printf("string转int:%d\n", f)
    fmt.Printf("string转float64:%f\n", g)
    
    // 类型和长度
    fmt.Printf("\n类型和长度:\n")
    fmt.Printf("a的类型:%T\n", a)
    fmt.Printf("b的类型:%T\n", b)
    fmt.Printf("d的类型:%T\n", d)
    fmt.Printf("d的长度:%d\n", len(d))
}

示例效果:

强化练习内容

- 尝试不同的变量声明方式
- 实践各种类型转换
- 观察精度损失情况
- 处理类型转换错误
- 使用fmt不同的格式化输出

数据类型取值区间表

数据类型分类 英文对照 类型名称 取值区间 说明
整数类型 Integer int8 -128 到 127 有符号 8 位整数
int16 -32768 到 32767 有符号 16 位整数
int32 -2147483648 到 2147483647 有符号 32 位整数
int64 -9223372036854775808 到 9223372036854775807 有符号 64 位整数
uint8 0 到 255 无符号 8 位整数,也称为 byte 类型
uint16 0 到 65535 无符号 16 位整数
uint32 0 到 4294967295 无符号 32 位整数
uint64 0 到 18446744073709551615 无符号 64 位整数
int 取决于系统,32 位系统为 -2147483648 到 2147483647,64 位系统为 -9223372036854775808 到 9223372036854775807 有符号整数,通常用于大多数整数运算
uint 取决于系统,32 位系统为 0 到 4294967295,64 位系统为 0 到 18446744073709551615 无符号整数
uintptr 足够存储指针的无符号整数 用于存储指针地址
浮点数类型 Floating-point float32 约 ±1.18e-38 到 ±3.40e+38 32 位浮点数
float64 约 ±2.23e-308 到 ±1.80e+308 64 位浮点数,通常用于大多数浮点数运算
布尔类型 Boolean bool true 或 false 表示逻辑值
字符串类型 String string 由 UTF-8 编码的字节序列组成,长度不限 用于存储文本数据