【Go语言学习系列03】Go基础语法(一):变量与数据类型

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

📚 原创系列: “Go语言学习系列”

🔄 转载说明: 本文最初发布于"Gopher部落"微信公众号,经原作者授权转载。

🔗 关注原创: 欢迎扫描文末二维码,关注"Gopher部落"微信公众号获取第一手Go技术文章。

📑 Go语言学习系列导航

本文是【Go语言学习系列】的第3篇,当前位于第一阶段(入门篇)

🚀 第一阶段:入门篇
  1. Go语言简介与环境搭建
  2. Go开发工具链介绍
  3. Go基础语法(一):变量与数据类型 👈 当前位置
  4. Go基础语法(二):流程控制
  5. Go基础语法(三):函数
  6. Go基础语法(四):数组与切片
  7. Go基础语法(五):映射
  8. Go基础语法(六):结构体
  9. Go基础语法(七):指针
  10. Go基础语法(八):接口
  11. 错误处理与异常
  12. 第一阶段项目实战:命令行工具

📚 查看完整Go语言学习系列导航

📖 文章导读

本文将深入介绍Go语言的变量与数据类型系统,涵盖:

  • Go变量声明的多种方式及其最佳实践
  • Go的基本数据类型(整数、浮点数、布尔值、字符串)详解
  • 复合数据类型(数组、切片、映射)基础概念
  • 类型转换和类型断言的正确使用方法
  • 常量定义与iota枚举模式的高级技巧
  • 零值机制与变量作用域的全面讲解

无论你是编程新手还是有其他语言经验的开发者,本文都将帮助你全面理解Go语言的类型系统,为后续学习打下坚实基础。

Go数据类型概览


Go基础语法(一):变量与数据类型详解

一、Go语言变量声明

在Go语言中,变量是存储数据的基本单元。相比其他语言,Go提供了多种变量声明方式,满足不同场景的需求。

1.1 变量声明的基本语法

Go语言变量声明有以下几种主要形式:

1) 完整声明形式
var 变量名 类型 = 初始值

例如:

var name string = "Gopher部落"
var age int = 25
var isActive bool = true
2) 类型推导形式

如果提供了初始值,Go编译器可以自动推导变量类型:

var 变量名 = 初始值

例如:

var name = "Gopher部落"  // 自动推导为string类型
var count = 42         // 自动推导为int类型
var pi = 3.14159       // 自动推导为float64类型
3) 短变量声明(最常用)

在函数内部,可以使用更简洁的:=语法:

变量名 := 初始值

例如:

func main() {
   
   
    name := "Gopher部落"
    age := 25
    isActive := true
    
    // 使用这些变量...
}

⚠️ 注意:短变量声明(:=)只能在函数内部使用,不能在全局作用域使用。

4) 批量声明

可以一次声明多个变量:

var (
    name     string = "Gopher部落"
    age      int    = 25
    isActive bool   = true
)

// 或者使用短变量声明
func main() {
   
   
    name, age, isActive := "Gopher部落", 25, true
}

1.2 变量命名规则与约定

Go语言的变量命名遵循以下规则:

  1. 必须以字母或下划线开头,后跟字母、数字或下划线
  2. 区分大小写countCount是不同的变量
  3. 不能使用关键字作为变量名,如funcvarif

Go社区的命名约定:

  1. 驼峰式命名法

    • 局部变量和私有字段用小驼峰:userNameitemCount
    • 导出(公开)变量和字段用大驼峰:UserNameItemCount
  2. 简洁明了:Go推崇简短的变量名,尤其是在小作用域中

    // 推荐
    for i := 0; i < 10; i++ {
         
          ... }
    
    // 不推荐
    for index := 0; index < 10; index++ {
         
          ... }
    
  3. 缩略词全大写:如HTTPURLID等(在小驼峰中是httpClient

1.3 零值(Zero Values)机制

Go语言的一个重要特性是所有变量都有默认值,称为"零值":

类型 零值
整数类型 0
浮点类型 0.0
布尔类型 false
字符串 "" (空字符串)
指针、函数、接口、切片、通道、映射 nil
var (
    i int
    f float64
    b bool
    s string
    p *int
)

func main() {
   
   
    fmt.Println(i)  // 输出: 0
    fmt.Println(f)  // 输出: 0
    fmt.Println(b)  // 输出: false
    fmt.Println(s)  // 输出: ""
    fmt.<
golang如何比较浮点数的大小 Golang浮点数比较和运算会出现误差。 浮点数储存至内存中时,2的-1、-2……-n次方不能精确的表示小数部分,所以再把这个数从地址中取出来进行计算就出现了偏差。 package main import ( errors fmt github.com/shopspring/decimal ) func FloatCompare(f1, f2 interface{}) (n int, err error) { var f1Dec, f2Dec decimal.Decimal switch f1.(type) { case float64: f1Dec = decim 立即下载

相关推荐

golang float64比较大小

aa:= 2.55 bb:= 1.23 //比较float64 大小 if math.Max(aa, bb) == aa && math.Abs(aa-bb) > 0.000001 { fmt.Println(aa,bb) }

zmlucky的博客 2796

Go语言学习系列00】Go语言学习系列导航

本文是Go语言学习系列的导航文档,提供了从入门到精通的学习路径,包含各阶段文章链接和内容概述,帮助读者系统化学习Go语言

GopherTribe的博客 1562

Go-知识简短变量声明

短变量声明操作符:=虽然很好用,但是需要注意:=的特性,在使用的时候,需要避免因为使用:=而导致的同名变量声明,以及作用域内无效变量的声明。

a18792721831的博客 1591

GO语言学习之路】GO语言中的变量

GO语言学习之路---GO语言中的变量

wenwenaier的博客 1645

go语言学习

1.变量定义 package main import "fmt" func main(){ //定义变量:var //常量定义:const //01-先定义变量,再赋值, var 变量数据类型 var name string name = "chenran" var age int age = 20 fmt.Println("name",name) fmt.Printf("name is: %s, age is:%d\n", name,age) //02-定义时直接赋

weixin_44825767的博客 2598

Go语言学习笔记-变量,常量以及数据类型

1. Golang变量,常量 1)变量(常量)的声明 Go语言变量和常量分别通过关键字 var 和 const 来定义,变量(或常量)声明的般形式为 var name type//类似的,有 const name type 其中name是变量(常量)的名称,type是数据类型。(以下只以变量为例) 如果是多个相同数据类型变量,则可以这么写: var a1, a2, a3 *int Go语言数据类型写在最后的个好处是确保所有前面声明的变量都是该类型(对比:C/C++的声明 int* a1, a2

qq_2984921744的博客 316

Go语言学习记录

Go 的可执行文件都比相对应的源代码文件要大很多,这恰恰说明了 Go 的 runtime 嵌入到了每个可执行文件当中。尽管 Go 编译器产生的是本地可执行代码,然而这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime包中找到)当中。使用门具有垃圾回收功能的编程语言不代表你可以避免内存分配所带来的问题,分配和回收内容都是消耗 CPU 资源的种行为。/src:包含源代码构建脚本和标准库的包的完整源代码(Go门开源语言)/os_arch:包含标准库的包的对象文件(.a)

sunny-blog 990

Go语言学习-第课-10分钟速通版(必看)

我将为你创建系列Go语言学习文件,从基础到高级,按照推荐的学习顺序排列。

学长的猫的博客 543

go语言学习

安装 : liunx下安装 go语言的特点 引入包的概念,go语言的每个文件都要属于个包,不能单独存在 引入垃圾回收机制,内存自动回收 天然并发(支持大并发)语言层面支持并发,实现简单 从goroutine,轻量级线程,可实现大并发处理,高效利用多核 基于CPS并发模型实现 吸收管道通信机制,channel,可以实现不同goroutine的通信 go函数可以支持返回...

dsaghjkye的博客 709

Learning Golang项目全解析:从零基础到实战高手的完整指南

Learning Golang项目是个全面的Go语言学习资源,提供了丰富的实战示例、算法实现和真实世界应用案例,帮助开发者从零基础掌握Go语言基础和高级特性。无论是刚入门的新手还是有定经验的开发者,都能通过这个项目快速提升Go编程技能。 ## 为什么选择Learning Golang项目? Go语言作为近年来备受关注的编程语言,以其简洁高效、并发性能优越和强大的标准库而闻名。Learni

gitblog_00057的博客 314

Go语言学习笔记

所有博客内容首发于我的个人博客liwenzhou.com,特搬运到这里。 《Go语言学习之路》博客目录。 2015年底我因为工作原因接触到了Go语言,那时网上关于Go语言学习资料不多,好在直坚持到现在。我把自己学习Go语言的笔记都整理到这里,希望能给Go社区的发展出点绵薄之力,帮助更多的人加入Gopher大家庭。 Go语言介绍 为什么你应该学习Go语言? →B站视频链接 开发环境准备 ...

qq1289287487的博客 558

为什么选择over-golangGo语言学习者的终极资源宝库

over-golang个全面的Go语言学习资源库,涵盖从基础语法到高级微服务的完整知识体系。无论你是编程新手还是有经验的开发者,这个项目都能为你提供系统的Go语言学习路径和实用的开发指南,帮助你快速掌握Go语言的核心概念和实战技能。 ## 、系统全面的学习内容架构 over-golang采用模块化的知识组织方式,将Go语言学习分为八个主要模块,从基础到高级循序渐进,满足不同阶段学习者的需

gitblog_00341的博客 776

Go学习笔记

笔记

m0_65534674的博客 1672

go语言学习总结,有源码有注释

章、go语言基础数据类型,01_基础数据类型1 变量的声明,变量初始化,变量赋值,匿名变量,iota枚举 第章、go语言基础数据类型,02_基础数据类型2 float,bool,byte,string,复数类型,格式化输出,变量的输入,类型转换,类型别名type 第二章、go语言流程控制,03_流程控制 if语句,switch语句,for循环,range迭代,break,continue,goto 第三章、go语言函数,04_函数的使用1 无参、有参,无返回值、有返回值函数的定义和使用,不定参数函数,

weixin_40355471的博客 1350

Go语言学习03

Go语言学习03 Golang 面向对象 1)利用变量、数组、map集合管理养猫问题,数据类型,不利于数据的管理和维护 2)因为猫的名字、年龄、颜色,都是属于只猫的,属性类型不同 3)如果我们希望对猫的属性(名字、年龄、颜色…)进行操作(绑定方法),也不好处理 4)于是使用结构体技术来管理 什么是面向对象编程? 1)面向对象编程 简称 OOP(Object Oriented Programming) 2)Golang没有类(class)Go语言的结构体(struct)其它编程语言的类(class

IT_Carter的博客 381

go语言学习笔记-基础

name string // 课程时间target string // 学习目标spend int // 学习时间// 创建实例01target: "学习",spend: 10,// 创建实例02lesson02 := Lesson{"titi", "学习", 10}// 创建实例03fmt.Println("lesson03:", lesson03) // 输出“ 0”因为结构体中string默认为空,int默认为0// 访问实例对象该接口方法列表内部,声明area()函数。

YDxuan的博客 1177

计算机基础语言学习线路图

计算机基础语言学习线路图 HTML HTML教程 HTML简介 HTML编辑器 HTML基础 HTML元素 HTML属性 HTML标题 HTML段落 HTML样式 HTML格式化 HTML引用元素 HTML计算机代码元素 HTML注释 HTML颜色 HTML和样式表 HTML超链接 HTML图片 HTML表格 HTML列表 HTML块级元素 HTML类 HTML iframe...

hixiaoyang的博客 3259
上一篇: 【Go语言学习系列02】Go开发工具链介绍
下一篇: 【Go语言学习系列04】Go基础语法(二):流程控制
Gopher部落
博客等级 码龄1年 784粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gopher部落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值