从零开始学GO ---- 变量、常量、基本数据类型

第二篇:Go基础语法与数据类型——从零开始掌握Go的核心语法 本文深入讲解Go语言基础语法,从程序结构到变量与常量的使用。第一部分介绍Go程序的基本组成元素和编译流程,展示最小和完整程序示例。第二部分详细讲解变量的四种声明方式、Go特有的零值机制(各类型默认初始值)及其实际应用价值。第三部分介绍常量的声明方式,特别是iota在枚举场景中的特殊用法。通过电商平台财务误差等实际案例,强调基础语法的重要性,帮助开发者编写健壮高效的Go代码。 阅读详情

从零开始学GO ---- 变量、常量、基本数据类型

第一个GO程序:hello world

代码如下:

package main // 声明 main 包,表明当前是一个可执行程序

import "fmt" // 导入内置 fmt 包

func main() { // main函数,是程序执行的入口
	fmt.Printf("Hello World!") // 在终端打印 Hello World!
}

然后执行: go build hello.go 进行编译,之后便可以看到有一个exe文件,可以直接运行。

一些细节:

  • 声明main包,表示当前是一个可执行程序
  • 通过import导入其他包,fmt是标准输入输出包,包含有Print函数
  • main函数表示程序入口,并且main函数所在的包名必须是main
  • 函数以func开头
变量和常量
变量

显示变量声明:var vatName dateType [= value]

其中,var是关键字,用于变量声明,varName是变量名字,dateType表示数据类型,value是初始值,初始值可以是字面量,也可以是其他变量名或者表达式,不显示初始化的话将默认为零值。

tips:GO的变量声明后将立即分配空间

var number int = 1
var name string = "jessy"

//也可以利用类型推导将变量的类型省略
var name, age = "Q1mi", 20

短类型变量声明: varName := value

只能在函数内部短类型声明,可以使用更简略的 := 方式声明并初始化变量 ,GO编译器将自动类型推断

//...
func main() {
	n := 10
	m := 200 // 此处声明局部变量m
	//...
}

匿名变量:在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示

func function() (int, string) {
	return 10, "string"
}
func main() {
	x, _ := function()
	_, y := function()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。_多用于占位,表示忽略值

常量

常量使用一个名称绑定一个内存地址,该内存地址存储的数据类型和内容声明后不可以再变。

//变量前加const就表示常量声明
const pi = 3.1415
const e = 2.7182

//可以声明多个变量
const (
    pi = 3.1415
    e = 2.7182
)
//const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
    n1 = 100
    n2
    n3
)       //则n2 n3都是100

预声明标识符iota用在常量声明中,初始值为0,一组多个变量同时声明时其值逐行增加,专门用来初始化常量

const (
	c0=iota  //c0==0
	c1=iota  //c1==1
	c2=iota  //c2==2
)
//  <===>  等价于
const(
	c0=iota   //c0==0
    c1        //c1==1
    c2        //c2==2
)
//iota是逐行增加的
const(
	a=1<<iota  // iota==0,so a==1
    b=1<<iota  // iota==1,so b==2
    c=3        //c==3  and iota==3
    d=1<<iota  //iota==3,so d==8
)
基本数据类型
布尔型

Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true和false,并且在Go语言中,布尔型数据和整型数据不可以相互转换,如果声明的布尔型不进行初始化,则默认为false

var a bool=true
var b bool=(x>y)&&(x>0)
整型

Go语言内置了12种整数类型, 分别是:int8、int16、int32、int64 对应的有符号整型,和uint8、uint16、uint32、uint64对应的无符号整型,以及byte,int,uint,uintptr。

byte是unit8的别名,int和uint表示整数类型,受特定 CPU 平台的字长影响。

类型描述
uint8无符号 8位整型 (0 到 255)
uint16无符号 16位整型 (0 到 65535)
uint32无符号 32位整型 (0 到 4294967295)
uint64无符号 64位整型 (0 到 18446744073709551615)
int8有符号 8位整型 (-128 到 127)
int16有符号 16位整型 (-32768 到 32767)
int32有符号 32位整型 (-2147483648 到 2147483647)
int64有符号 64位整型 (-9223372036854775808 到 9223372036854775807)
浮点型

Go语言支持两种浮点型数:float32和float64

使用浮点数要注意,浮点数字会被自动推断为float64类型,并且使用浮点数不应该使用==或 != 来进行比较,而应该采用一个精度的大小比较去判断,高精度要求应该采用math标准库。

var b :=10.00  //会被推断为float64
var a float32=1.2

打印浮点数时,可以使用fmt包配合%f进行格式化输出

fmt.Printf("%f\n", math.Pi)  //3.141593
fmt.Printf("%.2f\n", math.Pi) //3.14
复数类型

Go语言内置的复数类型有两种:complex64和complex128,复数在计算机中用两个浮点数表示,一个表示实部一个表示虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位。

var value1 complex64=3.2+14i
var value2 =2+10i

Go的复数类型有三个内置函数:complex real imag,分别用于构建复数、返回实部、返回虚部

var v=complex(2.1,3)  //构造复数
a:=real(v)   //a=2.1
b:=imag(v)   //b=3
字符串

Go语言将字符串作为一种原生的基本数据类型,可以直接使用字符串字面量来进行初始化。

  • 字符串是常量,可以通过索引访问,但是不能修改某个字节的值

    var a ="hello world!"
    b:=a[0]
    a[1]='a'  //错误,不可以修改某字节的值
    
  • 字符串尾部不包含NULL字符,与C++不同

  • 采用切片操作时要慎用,因为每转换一次都需要复制内容(尤其数据量大的时候)

    a:="hello world!"
    b:=[]byte(a)
    
  • 字符串的底层实现是一个二元数据结构,一个是指针指向字节数组的起点,另一个是长度

    type stringStruct struct{
    	str unsafe.Pointer //指向底层字节数组的指针
        len int            //字节数组长度
    }
    
  • 基于字符串创建的切片和原字符串指向相同的底层字符数组,一样不能修改,对字符串的切片操作返回的字串仍是string,而非slice

  • string类型常用的一些方法:

    方法介绍
    len(str)求长度
    +拼接字符串
    strings.Split分割
    strings.contains判断是否包含
  • 修改字符串:要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。无论哪种转换,都会重新分配内存,并复制字节数组。

    func changeString() {
    	s1 := "big"
    	// 强制类型转换
    	byteS1 := []byte(s1)
    	byteS1[0] = 'p'
    	fmt.Println(string(byteS1))  //pig
    }
    
  • 字符串的切片:

    str := "hello,world"
    fmt.Println(str[6:])  
    //打印结果:world
    
byte和rune类型

Go语言的字符类型有两种:

  1. uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
  2. rune类型,代表一个 UTF-8字符。

当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。

遍历一个字符串:

	s := "hello,world!"
	for _, r := range s { //rune
		fmt.Printf("%c", r)
	}
	fmt.Println()
Go基本语法:变量、常量、数据类型详解 变量声明记住三种姿势,const和iota做枚举很好用,类型转换必须显式写。最容易踩的坑是:=造成的变量遮蔽,写代码时多留个心眼,用go vet扫一遍更保险。下一篇讲控制结构,Go的if、for、switch看着简单,里面藏着不少跟其他语言不一样的地方,switch默认不穿透这个设计就坑过不少人。 阅读详情

相关推荐

Go语言基础:从零开始掌握Go的基本概念

在本篇博客中,我们从零开始掌握了Go语言的基本概念,包括变量、函数、结构体、接口、流程控制、包管理和错误处理等。我们还对比了Go和Java,帮助您更好地理解Go的优势。Go具有简洁的语法、原生的并发支持和快速的运行速度,使其成为云计算、微服务和高性能系统的理想选择。希望这篇博客能为您学习Go语言提供启发和帮助。

斌擎科技 393

交换变量(简便方法)

交换变量(简便方法) C语言常用思路(非简便) variable1 = input("请输入第一个变量:") variable2 = input("请输入第二个变量:") variable3 = variable2 variable2 = variable1 variable1 = variable3 print("第一个变量是"+variable1) print("第二个变量是"+variable2) 请输入第一个变量:1 请输入第二个变量:2 第一个变量是2 第二个变量是1 python特有思路: v

zx980414k的博客 1225

电子纸价签实战:基于SSD1680的墨水屏驱动开发与优化

本文详细介绍了基于SSD1680驱动芯片的电子纸价签开发实战,涵盖硬件连接、驱动框架搭建、核心流程解析及性能优化。重点剖析了初始化配置、波形文件加载、图像数据写入与刷新触发等关键步骤,并提供了功耗优化、显示效果提升及代码健壮性等实用避坑指南,帮助开发者高效实现稳定低功耗的墨水屏驱动。

weixin_28278377的博客 230

【从零开始学习Go语言】九.Go语言之变量常量及指针总结

【从零开始学习Go语言】九.Go语言之变量和常量一.变量1.1 显示的完整声明1.2 简短声明二.常量三.基础类型四. 指针4.1定义4.2 用途五.总结 一.变量 变量是通过一个名称绑定一块内存地址,该内存地址所存储的数据类型由定义变量时指定,该内存的地址数据可以被改变;变量声明的方法有多种 1.1 显示的完整声明 package main import "fmt" func main...

一只特立独行的兔先森 1万+

从SolidWorks到Simulink:手把手教你用URDF文件搭建六轴机械臂仿真模型(含STL文件配置避坑)

本文详细介绍了从SolidWorks到Simulink的六轴机械臂URDF仿真全流程,包括URDF文件导出、Simscape模型生成与调试、动力学参数获取与验证等关键步骤。重点解决了STL文件配置、关节接口设置等工程化难题,帮助开发者高效构建可控制的数字孪生体。通过实战案例和优化技巧,提升机械臂仿真效率与准确性。

weixin_26812607的博客 266

Livox MID360与Fast-LIO2的实战部署指南:从驱动安装到点云处理

本文提供Livox MID360激光雷达与Fast-LIO2激光惯性里程计从零开始的实战部署指南。详细介绍了Ubuntu系统下的驱动安装、网络配置、点云数据验证以及Fast-LIO2算法的编译、参数配置与联合启动流程,帮助开发者快速搭建移动机器人SLAM系统,并包含关键参数调优与常见故障排查方法。

java5的博客 1025

从零开始学Go:轻松掌握Golang基本语法

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 从零开始学Go:轻松掌握Golang基本语法 随着技术的快速发展,编程语言的选择变得越来越重要。Go语言(又称Golang)作为一门高效、简洁且易于维护的语言,近年来受到了越来越多开发者的青睐。无论是构建微服务、处理大数据,还是开发高性能后端系统,Go语言都展现出了卓越的能力。然而,对于初学者来说,学习一门新语言可能...

WhiteTiger78的博客 737

centos8 安装新版bind9源码

bind一直在更新,使用了比较多的新架构 本文记录新版本的bind怎么安装,以及其依赖库的安装 1. 在https://www.isc.org/download/ 下载最新stable版本bind,本文以bind-9.17.9.tar.xz为例。将软件传到/root目录下。 也可以到https://ftp.isc.org/isc/bind9/ 下载更多历史版本 2. 安装基本的依赖库,像gcc、amake等 3. 需要安装libuv库,但直接用yum时可能安装不全 建议使用源码安装,需要安..

linggang_123的博客 2539

Golang从零开始(二):命名规范、变量和常量

这是 Go 零基础的第二篇,主要是说说 Go 的命名规范、变量和常量。 命名规范 Go 语言中,任何标识符(变量,常量,函数,自定义类型等)都应该满足以下规律: 连续的字符或数字组成。 以字符或下划线开头。 不能和 Go 关键字冲突。 关键字 Go 语言总共有25个关键字。如下: break default func interface sel...

weixin_34354945的博客 1550

【小白指南】如何将deepseek引入WPS\Word\Excel中去?

如何将deepseek引入WPS\Word\Excel中去?纯小白都能看的懂,一步步操作就能行

2503_90498422的博客 1万+

如何用Python+Librosa实现轴承异响检测?5步搞定工业设备故障预警

本文详细介绍了如何利用Python和Librosa库,通过5个步骤构建工业轴承异响检测与故障预警系统。从音频采集、预处理、频谱特征提取,到构建机器学习模型并进行实时监测,提供了完整的代码级解决方案。该方法能有效识别轴承早期故障特征,实现低成本、高效的设备预测性维护。

rnn9storyteller的博客 633

Golang入门指南 - Go的变量/常量

前端开发后端小白的 Golang 学习记录

Y_9906的博客 514

“EXB文件的格式和编程“

首先,打开文件并读取文件头,然后解析文件头中的元数据信息。接下来,循环读取数据块,每次读取块头部分,解析块的大小和类型,并读取相应大小的块数据。文件头(Header):EXB文件通常包含一个文件头,用于存储关于文件的元数据信息。读取EXB文件时,首先需要解析文件头,以了解文件的属性和数据结构。总结起来,EXB文件是一种常见的二进制数据文件格式,在编程中处理EXB文件需要了解其基本结构和元数据信息。通过以上代码,您可以根据自己的需求扩展处理其他类型的数据块,或者根据EXB文件的具体规范进行解析和处理。

HackCyberX的博客 1536

【Go语言圣经】从零开始学Go----3.基础数据类型

《Go语言圣经》读书笔记,完整知识点整理,从零开始学Golang

2301_79819426的博客 817

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

探索 Golang 基本语法:从零开始,轻松掌握高效编程

最新接入DeepSeek-V3模型,点击下载最新版本InsCode AI IDE 探索 Golang 基本语法:从零开始,轻松掌握高效编程 引言 Golang(Go语言)自2009年发布以来,凭借其简洁的语法、高效的并发处理能力和强大的标准库,迅速成为开发者的宠儿。无论是构建微服务、编写命令行工具还是开发分布式系统,Golang都展现出了卓越的性能和灵活性。然而,对于初学者来说,学习一门新语言可能...

inscode_066的博客 897

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【从零开始学习Go语言 | 第三篇】Go语言基础之变量和常量

本文介绍了Go语言中的标识符、关键字、变量和常量的基本概念与使用规则。标识符由字母、数字和下划线组成,区分大小写且首字母大小写决定包外可见性。变量声明需指定类型,支持批量声明和类型推导,函数内可使用短变量声明":="。常量使用const声明,必须初始化且不可修改。特别介绍了iota常量计数器的使用,包括基础自增、跳过值、位运算枚举等场景。文章还强调了命名规范和变量初始化规则,帮助开发者编写更规范的Go代码。

m0_73415483的博客 623

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Golang面试宝典——Go语言基本数据类型

最近几年,Go的热度持续飙升,国内外很多大公司都在大规模的使用Go。Google是Go语言诞生的地方,其他公司如Facebook、腾讯、阿里、字节跳动、百度、京东、小米等都在拥抱和转向Go。Go语言的开源项目也非常多,如kubernetes、docker、etcd。随着市场对Go语言人才需求的增长,很多开发者都投入了Go语言的怀抱。本系列文章将以第一视角与大家一同开始Golang的面试之路,希望大家能够有所收获,拿下心仪的offer。

请叫我雯子小姐的小爷的博客 604

【从零开始学习Go语言】七.Go标识符之内置函数常量总结

【从零开始学习Go语言】七.Go标识符之内置函数常量总结一. 内置函数二.常量标识符三.空白标识符四.总结 一. 内置函数 golang的内置函数共有十五个,不需要使用import引入便可以直接使用的函数。 make make函数主要用来初始化和创建一个对象的,针对map(集合),slice(切片),channel(通道)类型,注意只支持这三种类型。 package main func...

一只特立独行的兔先森 9980

Go语言入门指南:从零开始学Go

/ 基本函数// 多个参数类型相同,可以简写// 多返回值return 0, errors.New("除数不能为零")// 命名返回值return // naked return,自动返回命名返回值// 可变参数total := 0// 使用Go语言以其简洁、高效和强大的并发支持,成为现代后端开发的重要选择。环境搭建和第一个程序基础语法(变量、常量、数据类型、运算符)控制流程(条件、循环、switch)函数和方法数组、切片和Map结构体和接口错误处理。

好代码自己会说话,烂代码才需要注释来圆谎 4744

Go 语言入门指南:从零开始掌握 Go 的核心概念

本文介绍了Go语言的基础知识,包括安装方法、基本语法和核心概念。首先展示了经典的"Hello, World!"程序示例,说明Go程序的基本结构。接着详细讲解了变量与常量的声明方式、数据类型以及控制结构(if、for、switch)。然后介绍了函数定义和方法的使用,包括多返回值和方法绑定。最后重点讲解了Go语言的并发特性,包括goroutine和channel的基本用法。全文循序渐进,帮助读者快速掌握Go语言的基础知识,为后续深入学习奠定基础。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1113

02从零开始学习GO语言--标识符、关键字、变量和常量

目录 一: 标识符概念 Golang 对各种变量、方法、函数等命名时使用的字符序列称为标识符 凡是自己可以起名字的地方都叫标识符 标识符的命名规则 由 26 个英文字母大小写,0-9 ,_ 组成 数字不可以开头。var num int //ok var 3num int //error Golang 中严格区分大小写。 var num int var Num int 说明:在 g...

weixin_30426957的博客 305

go+vue——go入门

看到有人推【七米】,所以。。。

zsssss333的博客 2654
上一篇: 深入浅出MYSQL的事务隔离
下一篇: 从零开始学GO ---- 指针、数组、切片、字典、结构体
coding丁
博客等级 码龄9年 383粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值