二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换
一、输入Hello World
go语言中,想要输出内容到控制台,package必须是main,包括方法名也必须是main,
go语言输出的语法是 fmt 库。
package mainimport "fmt"func main() {// go语言中 输出内容 使用的库是 fmt库fmt.Println("Hello world")
}
二、变量的基本类型
Go语言的基本类型有:
-
boolean:布尔类型 true / false
-
string :字符串类型
-
数值型:
- int8:有符号8位整型(-128到127)长度
- int16:有符号16位整型(-32768到32767)长度
- int32:有符号32位整型(-2147483648到2147483647)长度
- int64:有符号64位整型(-9223372036854775808到9223372036854775807)长度
- uint8:无符号8位整型(0到255)
- uint16:无符号16位整型(0到65535)
- uint32:无符号32位整型(0到4294967295)
- uint64:无符号64位整型(0到18446744073709551615)
-
浮点型:
- float32:32位浮点型数字
- float64:64位浮点型数字
-
byte:等同于 uint8
主要适用于存储字符,存储的是字符的 ASCII码
-
rune:等同于 int32
也是用于存储字符的,存储的是字符的 ASCII码,但是比byte长度大,比如中文使用byte可能会导致存储不下,这个时候可以使用rune类型
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。
package mainimport "fmt"/*
*
go语言中基本数据类型分为:bool、字符和string、数值类型(整数:int、浮点数: float、byte字节 其实也是int、rune类型其实也是 int )
*/
func main() {// 整数var number1 int8var number2 int16var number3 int32var number4 int64var number5 uint8var number6 uint16var number7 uint32var number8 uint64//这个int是个 动态类型 如果操作类型是 64 那么这里就是 int64 如果操作系统是 32 那么就是 int32//同意的道理 uint 也是var number9 int//浮点数var number10 float32var number11 float64fmt.Println(number1)fmt.Println(number2)fmt.Println(number3)fmt.Println(number4)fmt.Println(number5)fmt.Println(number6)fmt.Println(number7)fmt.Println(number8)fmt.Println(number9)fmt.Println(number10)fmt.Println(number11)// -------------------- byte 类型 就是 uint8// 主要适用于存储字符,存储的是字符的 ASCII码var number12 bytenumber12 = 'a'fmt.Println(number12)// -------------------- rune 类型 就是 int32// 也是用户存储字符的但是比byte长度大,比如中文使用byte可能会导致存储不下,这个时候可以使用rune类型var number13 runenumber13 = '酿'fmt.Println(number13)// ------------------------------ 字符串类型var name stringname = "这是一个字符串类型"fmt.Println(name)
}
三、定义变量
Go语言中可以不指定变量的类型,变量的类型可以让编译器来自动决定类型。
1.函数内变量的定义
go语言中定义语法的格式是,
var修饰,变量的名称在类型的前面,和java不同。
package mainimport "fmt"// go语言中 声明方法 使用 func
func main() {// 在 go语言中 声明 变量用 var// 名字在前面 类型在后面// 在 go语言中 如果声明了变量 没有给赋值的话 默认的值 就是 空串和0// 比如在 java中 如果不给值 那么就是 null go语言中 都是有默认值的// go语言中 如果定义了变量 不使用的话 会报错var name1 stringvar age1 intfmt.Println("当前人的名称是", name1, "当前人的年龄是", age1)// 定义变量 并且给变量 赋值var name stringvar age intname = "zhangsan"age = 18//重新赋值age = 19// 直接声明变量 然后给 变量赋值var sex = 1fmt.Println("当前人的名字叫 ", name, "他的年龄是", age, "性别是", sex)// 第二种定义变量的格式var name2, age2, sex2, flage2 = "zhangsan", 18, 1, true//对变量 重新赋值name2 = "李四"fmt.Println("第二种定义变量的名称是:", name2, "年龄是:", age2, "性别是:", sex2, "状态是:", flage2)// 第三种定义变量的格式name3 := "wangwu"age3 := 20//对变量重新赋值name3 = "赵六"fmt.Println("第三种定义变量的名称是:", name3, "年龄是:", age3)//连续对变量进行定义name4, age4, sex4 := "李七", 21, 1fmt.Println("第四种定义变量的名称是:"+name4, age4, sex4)// ---------------------------------------}
2.全局变量的定义
package mainimport "fmt"// 定义全局变量 任何一个函数里面都能使用
// 第一种写法
var name5 = "libai"
var age5 = 100// 第二种写法
var (name6 = "chengyaojin"age6 = 100
)// go语言中 声明方法 使用 func
func main() {fmt.Println(name5, age5)fmt.Println(name6, age6)
}
四、定义常量
常量一旦被定义,不能被修改。
package mainimport "fmt"func main() {/**1.常量类型只能定义 bool、数值类型(整数,浮点数,复数)、字符串2.变量定义了不使用会报错,常量定义了可以不使用不报错3.常量,定义的时候就指定值,不能修改*/// 显式定义常量值: 确定常量的类型const success1 int = 200// 隐式定义常量const success2 = 200// 常量定义 第一种方式const (ERROR1 = 1ERROR2 = 2ERROR3 = 3)// 第二种方式const ERROR4 = 4const ERROR5 = 5// 第三种方式// 如果定义常量时 没有给常量定义值 那么这个常量的值 将会使用 上个常量的值const (ERROR6 = 6ERROR61ERROR7 = 7ERROR71)const (code1 = "success"code2 = truecode3 = 1)fmt.Println(ERROR1, ERROR2, ERROR3)//常量 只能被初始化一次 再次初始化的话 编译报错//ERROR4 = 10fmt.Println(ERROR4, ERROR5)fmt.Println(ERROR6, ERROR61, ERROR7, ERROR71)
}
4.1常量 iota 的使用
假如我们针对用户表中,用户状态,需要用一个枚举类来表示他的状态,那么就go语言中,如何定义枚举呢?
package mainimport "fmt"func main() {/**1.iota是一个自增的数字类型2.如果中断了iota 那么必须 显式的恢复,后续会继续递增3.每次出现const的时候,iota的初始化都是 0*/// 在go语言中对状态进行枚举表示// 未使用:0// 正常: 1// 已封禁:2// 账号异常:3// 停用:4const (NOTUSE = iotaNORMALPROHIBITEDABNORMALDEACTIVATE)const (state = iotastate1state2 = "未使用"state3state4 = iota)// 假如我们的错误码 从 1000开始const (ERROR = 1000 + iotaERROR1ERROR2ERROR3ERROR4)fmt.Println(NOTUSE, NORMAL, PROHIBITED, ABNORMAL, DEACTIVATE)fmt.Println(state, state1, state2, state3, state4)fmt.Println(ERROR, ERROR1, ERROR2, ERROR3, ERROR4)
}
五、匿名变量
上面我们说过了,在go中如果变量不被使用的话,那么编译会报错。但是确实有些场景我们用不到这个变量。这个怎么处理?
使用匿名变量来解决。
package mainimport "fmt"// 定义一个函数 返回两个返回值
// 当前函数 返回两个返回值 类型是 int 和 bool
func anonymous() (int, bool) {return 0, true
}func main() {//定义匿名变量 用 "_" 来表示 匿名变量var _ int//将第一个返回值用 匿名变量来接口_, ok := anonymous()if ok {fmt.Println("方法返回的是true")}}
六、数据类型的转换
package mainimport ("fmt"strconv "strconv"
)/*
*基本数据类型的转换1.数值之间相互转换1.int、float、bool 转string2.string 转 int、float、bool
*/
func main() {var age int8 = 12//将age转成 uint8var age1 = uint8(age)//将age转成 int64age2 := int64(age)fmt.Println(age1)fmt.Println(age2)// -------------------------------- int转成 floatvar number = float64(age)fmt.Println(number)//----------------------------------- int float 转字符串// Itoa 函数必须转成 int类型var number1string stringnumber1 := int(age)number1string = strconv.Itoa(number1)fmt.Println("这是字符串类型:" + number1string)var numberFloatString stringvar numberFloat float64numberFloat = 266.141569//转成string//第1个参数是 要转换的类型//第2个参数是 要转换类型显示成什么样 具体format格式 可以点进去源码看//第3个参数 就写成 -1 就好了//第4个参数 就写成 64就好了numberFloatString = strconv.FormatFloat(numberFloat, 'f', -1, 64)fmt.Println("float64转成string" + numberFloatString)//----------------------------------- bool 转字符串var flage = truevar flageString stringflageString = strconv.FormatBool(flage)fmt.Println("将bool类型转成string类型:" + flageString)//-------------------------------------------------------- 字符串转int float bool// 1.string 转 intvar number11string = "100"var number11 intnumber11, err := strconv.Atoi(number11string)if err != nil {return}fmt.Println("string转成int类型", number11)// 2.string 转 floatvar floatstring = "3.14156"var float1 float64//第2个参数 就写成64float1, err = strconv.ParseFloat(floatstring, 64)if err != nil {return}fmt.Println("string类型转成float类型", float1)//将string转成boolvar bolstring = "false"var bool1 boolbool1, err = strconv.ParseBool(bolstring)if err != nil {return}fmt.Println("string类型转成bool类型", bool1)
}相关文章:
二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换
一、输入Hello World go语言中,想要输出内容到控制台,package必须是main,包括方法名也必须是main, go语言输出的语法是 fmt 库。 package mainimport "fmt"func main() {// go语言中 输出内容 使用的库是 fmt库fmt.Pr…...
mojo初体验
目录标题 mojo初体验试用地址变量定义参数可变性和所有权Structures后续 mojo初体验 试用地址 https://www.modular.com/get-started 与python基础语法很相似。 变量定义 let定义不可变变量var定义可变变量 参数可变性和所有权 下面是一个基本的函数: fn add…...
python3 重启docker方法
一、工作中的问题 工作中进行测试时,需要修改nacos配置,修改完成后再重启对应的docker容器,让配置生效,研究了下,使用docker库可以做到。 如何修改nacos配置可以参见我的另一篇文章,传送门 python3 修改…...
【js】js中深拷贝与浅拷贝:
文章目录 一、浅拷贝(修改新对象会改到原对象)【1】通过 直接赋值【2】Object.assign()方法 二、深拷贝(修改新对象不会改到原对象)【1】通过JSON对象来实现深拷贝【2】 Object.create(…...
大文件上传demo,前端基于Uppy,后端基于koa
前言 文件上传基本上所有的管理系统之类的项目都有这么一个功能。因为使用了Element,可以方便的使用 其提供的Upload组件,对于普通上传来说基本上就够用了。但是有时候会涉及到大文件上传的需求,这时就会面临一些问题:比如文件上…...
typeScript--[函数定义]
一.TypesScript 函数的定义 函数的定义包括两种类型:函数声明和函数表达式。 1.函数声明 function hello(): string {return "hello" } 2.函数表达式 var hello1 function (): string {return "hello" } 二.函数之可选参数 参数后面的限…...
Spring初始化项目
1、官网用法 访问地址:https://start.spring.io idea配置:https://start.spring.io 2、阿里巴巴加速 访问地址:https://start.aliyun.com/bootstrap.html idea配置:https://start.aliyun.com 3、区别 官网阿里巴巴版本最新稍…...
Opencv 图像金字塔----高斯和拉普拉斯
原文:图像金字塔----高斯和拉普拉斯 图像金字塔是图像中多尺度表达的一种,最初用于机器视觉和图像压缩,最主要用于图像的分割、融合。 高斯金字塔 ( Gaussian pyramid): 高斯金字塔是由底部的最大分辨率图像逐次向下采样得到的一系列图像…...
gitLab(git)误提交命令
1.先使用下面命令查看一下分支上已提交的信息 git log 2.回退到之前的版本 git reset —hard 你要删除的提交哈希码(一般是离这个命令最近的一串数字) 3.覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本 注意:切换到你提…...
Rust个人学习笔记2
一定要牢记Rust是基于表达式的语言,除了声明语句和表达式语句外,其他的都是表达式。所以if也是表达式,它可以被用作右值。 条件控制 if-else。cpp和python得结合。 fn main() {let number 34;if number < 0 {println!("number &l…...
深入浅出Android同步屏障机制
原文链接 Android Sync Barrier机制 诡异的假死问题 前段时间,项目上遇到了一个假死问题,随机出现,无固定复现规律,大量频繁随机操作后,便会出现假死,整个应用无法操作,不会响应事件ÿ…...
工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…...
Python 专栏目录索引
文章目录 Python 环境搭建Python 语法 变量、print、注释和运算符Python 的基本结构Python 中的文件和文件夹操作Python 中常用库Python 常见问题及解决方案Python 应用实例 Python 环境搭建 vscode搭建Python环境 Python 语法 变量、print、注释和运算符 python语法 变量、…...
SSM学习
技术架构 crm的技术架构: 视图层(view):展示数据,跟用户交互。 html, css,js,jquery,bootstrap(ext / easyUI),jsp控制层(Controller):控制业客处理流程(接收请求,接收参数,封装参数;根据不同的请求调用业务 (servlet, ) springMVC ( , webwork,strutsl,struts2)业…...
.net项目部署Docker
1、项目生成的bin目录下创建Dockerfile文件 #运行环境描述,此处是用的Net5构建镜像 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build #复制文件到 docker容器中的app文件夹中 COPY . /app #设置工作目录为 app 文件夹,要和上面一致哦 WORKDIR /app #设…...
Ubuntu无法加载exfat的USB存储设备
当接入设备USB存储设备提示: 不能挂在63GB 卷 Error mounting /dev/sdb1 at /media/ubuntu/83C9-26F4: Command-line mount -t "exfat" -o "uhelperudisks2,nodev,nosuid,uid1000,gid1000,iocharsetutf8,namecase0,errorsremount-ro,umask0077"…...
【计算机网络】网络编程接口 Socket API 解读(2)
Socket 是网络协议栈暴露给编程人员的 API,相比复杂的计算机网络协议,API 对关键操作和配置数据进行了抽象,简化了程序编程。 本文讲述的 socket 内容源自 Linux 发行版 centos 9 上的 man 工具,和其他平台(比如 os-x …...
【黄啊码】PHP如何防止重复提交
防抖(Debounce)是一种防止重复提交的策略,它通过延迟一定时间来合并连续的操作,以确保只执行一次。 以下是几种防抖的实现方法以及对应的代码示例: 1. 前端 JavaScript 实现: 在前端使用 JavaScript 实现…...
2594. 修车的最少时间
文章目录 Tag题目来源题目解读解题思路方法一:二分枚举答案 写在最后 Tag 【二分枚举答案】【数组】 题目来源 2594. 修车的最少时间 题目解读 给你一个表示机械工能力的数组 ranks,ranks[i] 表示第 i 位机械工可以在 r a n k s [ i ] ∗ n 2 ranks[…...
vue 使用qrcode生成二维码并可下载保存
安装qrcode npm install qrcode --save代码 <template><div style"display: flex; flex-direction: column; align-items: center; justify-content center;"><div>查看溯源码,<a id"saveLink" style"text-decorati…...
open-parse快速入门:5分钟掌握智能文档解析的终极方法
open-parse快速入门:5分钟掌握智能文档解析的终极方法 【免费下载链接】open-parse Improved file parsing for LLM’s 项目地址: https://gitcode.com/gh_mirrors/op/open-parse open-parse是一款专为LLM(大语言模型)优化的智能文档解…...
颠覆式突破限制:五大核心技术实现网盘下载加速革命
颠覆式突破限制:五大核心技术实现网盘下载加速革命 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广…...
提升51%运行速度:Win11Debloat系统优化工具全方位应用指南
提升51%运行速度:Win11Debloat系统优化工具全方位应用指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化…...
别再让用户点‘拒绝‘了!微信小程序订阅消息 wx.requestSubscribeMessage 的完整避坑指南(附版本兼容代码)
微信小程序订阅消息实战:从用户拒绝到高授权率的完整策略 每次看到后台统计里那惨淡的订阅消息授权率,作为开发者的你是否感到无力?用户总是习惯性点击"拒绝",而你可能连解释的机会都没有。这不是你的代码有问题&#x…...
Windows下QT5.15.2安装MQTT模块全攻略(附分支选择避坑指南)
Windows下QT5.15.2安装MQTT模块全攻略(附分支选择避坑指南) 在物联网开发领域,MQTT协议因其轻量级和高效性成为设备通信的首选方案。对于使用QT5.15.2进行跨平台开发的工程师而言,在Windows环境下正确配置MQTT模块往往是项目起步的…...
Adams中利用AKISPL和DX函数实现非线性衬套力建模
1. 非线性衬套力建模的核心价值 在机械系统仿真中,非线性衬套力的精确建模直接影响着悬架、发动机支架等关键部件的动态特性分析精度。传统线性模型难以捕捉橡胶衬套、液压衬套等元件在真实工况下的力-位移关系,而Adams中的AKISPL和DX函数组合就像给工程…...
手把手教你恢复误删的xfce4面板(附备份还原完整流程)
深度解析XFCE4面板管理:从误删恢复到高效备份的全方位指南 XFCE4作为Linux桌面环境中轻量高效的代名词,其面板系统却常常成为用户操作的"高危区域"。我曾亲眼见证一位开发者同事在演示前夕误删所有面板,手忙脚乱地尝试各种恢复方法…...
为什么越来越多的STM32项目转向HAL库?从寄存器封装层次看开发效率提升
为什么STM32开发者纷纷拥抱HAL库?深度解析现代嵌入式开发效率革命 在嵌入式开发领域,STM32系列单片机凭借其出色的性能和丰富的生态,已成为工程师们的首选平台。然而,随着产品迭代速度的不断加快,开发效率成为衡量技术…...
QT实战:用QChartView快速打造动态折线图(附完整代码)
QT实战:用QChartView快速打造动态折线图(附完整代码) 在数据可视化领域,动态折线图因其直观展示数据变化趋势的能力,成为监控系统、金融分析、工业控制等场景的标配。QT框架提供的QChartView组件,让开发者能…...
Gonon无数字时钟:打破传统计时,开启几何编码新时代
【导语:2026年,Tony Gaeta团队推出Gonon无数字时钟,摒弃文化预设,用几何图形计时。它突破传统,解决布局难题,为时间显示带来新方向,有望革新计时领域。】时钟本质与时间层次剖析要打造创新时钟&…...
