GO语言笔记1-变量与基本数据类型

变量使用步骤

  1. 声明
  2. 赋值
  3. 使用
package main
import "fmt"
func main(){
	var age int //声明一个 int类型的变量叫age
	age = 18 //给变量用 = 赋值
	fmt.Println(age) //使用变量  输出变量的值
}

编译运行输出变量值

变量的四种使用方式

package main
import "fmt"
func main(){
	var num1 int = 18 //1.指定变量的类型并且赋值
    fmt.Println(num1) //使用变量  输出变量的值

	var num2 int //2定变量类型,不赋值,使用默认值
	fmt.Println(num2 ) //使用变量  输出变量的值

    var num3="tom" //3定变量不指定类型,根据后边的赋值自动确认类型
	fmt.Println(num3 ) //使用变量  输出变量的值

    num4:="男" //4.省略 var 使用 :=,不能写成 = 
	fmt.Println(num4 ) //使用变量  输出变量的值
}

编译运行

一次性声明多个变量 

package main
import "fmt"
func main(){ 
    //未赋值的
    fmt.Println("未赋值的####################")
	var n1,n2,n3 int
    fmt.Println(n1)
    fmt.Println(n2)
    fmt.Println(n3)
    //赋值的
    fmt.Println("赋值的####################")
    var n4,n5,n6 = 10,"小明",7.8
    fmt.Println(n4)
    fmt.Println(n5)
    fmt.Println(n6)
}

编译运行 

变量的类型

  1.  定义在函数内的变量叫做局部变量

  2. 定义在函数外部的变量叫做全局变量
package main
import "fmt"
//第一种声明方式 一个一个声明
var n1 = 100
var n2 = 9.7

//第二种声明方式,一次多个
var (
	n3 = 500
	n4 = "hello"
)
func main(){ 
    fmt.Println(n1)
    fmt.Println(n2)
    fmt.Println(n3)
    fmt.Println(n4)
}

变量的数据类型 

整数类型

【1】整数类型介绍:
简单的说,就是用于存放整数值的,比如10,-45,6712等等。

【2】有符号整数类型:
【3】无符号整数类型:

【4】其他整数类型:

 

Golang的整数类型,默认声明为int类型 

浮点型

 浮点型底层存储:符号位+指数位+尾数位,尾数位只存了一个大概,有可能会出现精度丢失所以通常建议使用 float64,默认也是float64

浮点数可以用十进制表示形式,也可以用科学计数法

//十进制
var num float32= 3.14

//科学计数法
var mum float64 = 314E-2
var num float64 = 314e-2

字符类型

定义字符使用byte

字母、数字、标点等字符底层是按照ASCII码进行存储,本质上是一个整数,可以至直接参与运算,输出字符的时候会将对应码值输出。

package main
import "fmt"

func main(){ 
    var c1 byte = 'a'
    var c2 byte = '6'
    var c3 byte = '('
    fmt.Println(c1 + 20) //117
    fmt.Println(c1) //97
    fmt.Println(c2) //54
    fmt.Println(c3) //40
}


  汉字字符,底层对应的是Unicode码值,使用byte会报错类型溢出,因为byte的范围是255,可以使用int

 

 如果想显示对应的字符,必须采用格式化输出

 

转义字符 

常用转义字符

\n 换行    \b 退格    \r 光标回到本行开头,后续就会替换原有的字符

\t 制表符   \" 输出"

布尔型

        布尔型(bool ) 只有两个值 true和false,只占用一个字节,一般用于逻辑运算和流程控制

 

字符串 

        一串固定长度的字符连接起来的字符序列

如果字符串中没有特殊字符,直接使用英文双引号包裹 

如果有特殊字符使用 英文反引号包裹或转义字符

字符串拼接 使用  +   或者 +=,当字符过长时吗+ 需要保留在上一行的最后

基本数据类型默认值

数据类型默认值数据类型默认值
整数类型0布尔false
浮点类型0字符串"" 空串

数据类型转换

基本数据类型转换

 go语言没有自动类型转换,必须显示转换,表达式 T(v) 将值v转换为T类型

表数范围大的类型转换表数范围小的类型会有精度丢失的问题

例如:

package main
import "fmt"

func main(){ 
    var i int8 = 3
    var f float32 = float32(i)
    fmt.Println(i) 
    fmt.Println(f) 
}

基本类型转string

方式1:fmt.springf("%参数",表达式)

方式2:需要使用strconv包的函数

%T 和 strconv. FormatXxxx  的使用详见go的api文档

package main
import "fmt"
import "strconv"
func main(){ 
    
    var i int = 19
    var str1 string = fmt.Sprintf("%d",i) 
    fmt.Println(str1)  //%d 10进制转字符串
    var str2 string = strconv.FormatInt(int64(i),10)
    fmt.Println(str2)  

    var f float64 = 19.0
    var str3 string = fmt.Sprintf("%f",f) 
    var str4 string = strconv.FormatFloat(f,'f',9,64) 
    fmt.Println(str3)  //%f 浮点型转字符串
    fmt.Println(str4)
}

string转基本类型

使用strconv包的函数,详见go语言的api

string转其他类型的时候必须是有效的数据,否者会转为对应的默认值

package main
import "fmt"
import "strconv"
func main(){ 
    
    var s1 string = "true"
    var b bool
    /*
        ParseBool 函数有两个返回值(value bool,err error)
        value是我们需要的数据,err是出现的错误
        err可以使用 _ 忽略
    */
    b , _= strconv.ParseBool(s1)
    fmt.Println("b的类型是:%T,b=%v ",b,b)

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/292845.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费在线游戏探索平台

免费在线游戏平台 免费在线游戏平台,上百款游戏随便玩 关于POKI 免费在线小游戏 Poki是个性化的免费在线游戏探索平台。我们每天都会为您精心挑选最新颖的游戏,保证您玩得尽兴!在这里,您不会感到无聊,因为我们将根据…

rime中州韵小狼毫 help lua Translator 帮助消息翻译器

lua 是 Rime中州韵/小狼毫输入法强大的武器,掌握如何在Rime中州韵/小狼毫中使用lua,你将体验到什么叫 随心所欲。 先看效果 在 rime中州韵 输入效果一览 中的 👇 help效果 一节中, 我们看到了在Rime中州韵/小狼毫输入法中输入 h…

「解析」Windows 如何优雅使用 Terminal

所谓工欲善其事必先利其器,对于开发人员 Linux可能是首选,但是在家学习的时候,我还是更喜欢使用 Windows系统,首先是稳定,其次是习惯了。当然了,我还有一台专门安装 Linux系统的小主机用于学习Linux使用&am…

解决在test以外的目录下导入junit无效

以上引用来自src目录下的文件,可以看到,和junit有关的导入都飘红,但明明junit已经被正确导入进了项目中。 再看右侧的Maven的依赖下方,junit的右边有一个很不起眼的(test) 这是因为junit作为测试框架,可能包含仅适用于…

整除判断-判断正整数a能否被b整除,如果不能整除,输出商和余数 C语言xdoj42

问题描述 判断正整数a能否被b整除&#xff0c;如果不能整除&#xff0c;输出商和余数 输入说明 输入两个正整数a和b&#xff08;0<a, b<10000&#xff09;&#xff0c;a和b之间用空格分隔。 输出说明 如果a能被b整除&#xff0c;输出yes&#xff0c;否则在同…

mysql四大引擎、账号管理以及建库

目录 一.数据库存储引擎1.1存储引擎的查看1.2InnoDB1.3MyISAM1.4 MEMORY1.5 Archive 二.数据库管理2.1元数据库分类2.2 操作2.3 MySQL库 三.数据表管理3.1三大范式3.2 整形3.3 实数3.4 字符串3.5 text&blob3.6 日期类型3.7 选中标识符 四.数据库账号管理4.1 查询用户4.2查看…

锂电池寿命预测 | Matlab基于LSTM长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于LSTM长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于LSTM长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] http://t.csdn…

如何使用ArcGIS Pro转换单个点坐标

坐标转换作为基础的功能&#xff0c;一般的GIS软件都支持&#xff0c;大多数情况下&#xff0c;我们是转换整个图层&#xff0c;如果想要转换单个坐标点&#xff0c;在ArcGIS Pro内也是支持的&#xff0c;这里为大家介绍一下转换方法&#xff0c;希望能对你有所帮助。 拾取坐标…

IO进程线程 day4

进程状态间的转化 创建出三个进程完成两个文件之间拷贝工作&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一半内容&#xff0c;父进程回收子进程的资源 #include <head.h> int main(int argc, const char *argv[]) {FILE *fp1NULL,*fp2NULL;//定义两个文…

微信小程序:flex布局实现换行

1、关键代码.wxml&#xff1a; <view class"pay margin-top-40"><view class"info"><view class"pay-info-title margin-left-22 flex-start"> 请选择充值金额</view><view class"flex-wrap margin-top-20&quo…

【ZYNQ实验】第一篇、ZYNQ驱动HDMI显示图片

目录 第一部分、实验说明 1、点名过来看 2、实验说明 2.1、涉及到的知识 2.2、使用的硬件 3、测试效果 3.1、实验一效果 3.2、实验二效果 4、写在前面 5、参考文献 第二部分、硬件搭建 第三部分、实现方法 1、实验一 1.1、实验一原理图 1.2、MATLAB图片转换代码…

包含自动轮播、点击切换、显示图片信息和页码方框显示码数的 HTML 和 JavaScript 示例:

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图</title><style>#carousel-conta…

企业微信开发:自建应用:获取企业微信IP段(用于防火墙配置)

概述 在企业微信开发流程中&#xff0c;为了确保与企业微信API的网络通信安全&#xff0c;并适应防火墙配置要求&#xff0c;开发者需要获取企业微信API服务的IP地址范围。这样&#xff0c;仅允许与企业微信官方通信的合法请求通过防火墙&#xff0c;从而保障数据传输的安全性…

【K8S 云原生】Pod资源限制、Pod容器健康检查(探针)

目录 一、docker的重启方式和K8S重启方式 1、Pod的重启方式&#xff1a; 2、docker的重启策略&#xff1a; 二、yaml文件快速生成&#xff1a; 三、pod的状态&#xff1a; 四、Pod的资源限制 1、限制的方式和种类 2、CPU的限制的格式&#xff1a; 五、K8S拉取镜像的策…

ASP.NET Core路由中间件[1]: 终结点与URL的映射

一、路由注册 我们演示的这个ASP.NET Core应用是一个简易版的天气预报站点。如果用户希望获取某个城市在未来N天之内的天气信息&#xff0c;他可以直接利用浏览器发送一个GET请求并将对应城市&#xff08;采用电话区号表示&#xff09;和天数设置在URL中。如下图所示&#xff…

ARM Cortex-Mx 权威指南笔记

用于中断或异常屏蔽特殊寄存器细节 1、PRIMASK 在许多应用中,可能都需要暂时禁止所有中断以执行一些时序关键的任务&#xff0c;此时可以使用PRIMASK寄存器。PRIMASK寄存器只能在特权状态访问。PRIMASK 用于禁止除NMI和 HardFault 外的所有异常它实际上是将当前优先级改为0(最…

Git 对项目更新的时候提示错误 repository not owned by current user

遇到 Git 提示的错误信息为&#xff1a;repository not owned by current user 上图显示的是错误的信息。 问题和解决 出现上面错误信息的原因是当前文件夹的权限和 Git 的执行权限不一直导致的。 我们的问题是我们希望在网盘上使用 Git 更新克隆后的代码&#xff0c;但登录…

Dockerfile语法和简单镜像构建

Dockerfile是一个用于定义Docker镜像的文本文件&#xff0c;包含了一系列的指令和参数&#xff0c;用于指示Docker在构建镜像时应该执行哪些操作&#xff0c;例如基于哪个基础镜像、复制哪些文件到镜像中、运行哪些命令等。 Dockerfile文件的内容主要有几个部分组成&#xff0c…

pyparamvalidate 项目背景和需求分析

目录 一、前置说明1、总体目录2、本节目标 二、项目背景三、需求分析三、后置说明1、要点小结2、下节预告 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器&#xff0c;从编码到发布全过程》 2、本节目标 阐述 pyparamvalidate 项目背景和需求分析。 二、项目背景…

设计模式学习

面向对象有两个思维模型&#xff1a; 底层思维&#xff1a;向下&#xff0c;如何把握机器底层从微观理解对象构造&#xff0c;封装、继承、多态抽象思维&#xff1a;向上&#xff0c;如何将我们周围世界抽象为程序代码&#xff0c;包括面向对象、组件封装、设计模式、架构模式…