golang基础--类型与变量
基础知识--类型与变量
基本类型
布尔型:bool
- 长度: 1字节
- 取值范围: false, true
- 注意事项: 不可以使用数字代表,不像 python中可是使用 1和0表示
整型: int/uint
- 根据运行平台可能是32位或者是64位
8位整型: int8/uint8
- 长度:1字节
- 取值范围:
- 128~127(有运算符号)
- 0-255 无符号
字节型: byte (uint8别名)
16位整型:int16/uint16
- 长度:2字节
- 取值范围: -32768~32767 / 0~65536
32位整型:int32(rune) /uint32
- 长度:4字节
- 取值范围:-2^32 /2 -2^32 / 2-1/0~2^32-1
64位整型:int64/uint64
- 长度:8字节
- 取值范围:-2^64 /2 -2^64 / 2-1/0~2^64-1
浮点型: float32/float64
- 长度:4/8字节
- 小数位:精度 7/15小数位
足够保存指针的32或64位整数型:uintptr
其他类型:
- array, struct ,string
引用类型:
- slice, map, chan(通道--高并发特有)
接口类型: inteface
函数类型:func
类型零值
零值并不等于空值,而是当变量被声明位某种类型后的默认值,通常情况下值类型的默认值为0,bool为false, string 为空字符串
package main
import "fmt"
func main(){
var a int
var b int32
var c float32
var d bool
var e string
var a1[] int
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
fmt.Println(a1)
}
/*output
0 //int
0 //int32
0 //float32
false //bool
// string 默认为空
[] //切片
*/
类型别名
顾名思义就是可以将类型名指向一个别名
// 类型别名
package main
import "fmt"
type (
byte int8
rune int32
文本 string // 可使用中文类型别名(不建议这样做,It's stupid!)
ByteSize int64 // 可以更加直观的描述类型
)
func main() {
var b 文本 //将string 类型定义别名为文本
b ="文本类型名"
fmt.Println(b)
}
// output : 文本类型名import "fmt"
多个变量的声明
注意多个变量赋值多种写法
//多个变量声明
package main import "fmt" var (
aaa = "hello"
sss,bbb = 1, 2 //自行推断类型
// ccc :=3是错误的,不可以省略var
) func main() {
//var a, b, c, d = 1, 2, 3, 4 //并行声明变量,省略int类型
//a, b, c, d := 1, 2, 3, 4 // 函数变量中可以省略var,全局变量必须使用var
a, _, c, d := 1, 2, 3, 4 // _可以忽略某一个值,实际应用于当函数有多个返回值时,忽略某一个不使用的值
fmt.Println(a)
//fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
变量类型转换
go中不存在隐式转换,所有的类型转化必须是显示的声明
转换只发生在两种相互兼容的类型之间
类型转换格式如下:
// 类型转换
package main import "fmt" func main() {
var a float32 = 100.1
fmt.Println(a)
b := int(a)
fmt.Println(b) //这种方式是可行,只存在精度的丢失
c :=bool(a) //这种方式是可行,只存在精度的丢失
fmt.Println(c)
} /*output
a-->100.1
b--->100 //丢失了精度
c--->cannot convert a (type float32) to type bool
*/
思考:数字如何变成字符串?
//int转string,并不是我们想达到的效果
package main import (
"fmt"
"strconv" //导入类型转换包
) func main() {
var a int = 65
b := string(a) //int 转string,输出的是UTF8码中,序号65位表示的是字母A
b1 := strconv.Itoa(a) //确实想要将int 65 转换成string 65,使用 strconv包
fmt.Println(b)
fmt.Println(b1)
} //output: A
//output: "65"
golang基础--类型与变量的更多相关文章
- golang基础类型
1.变量 Go使用关键字var定义变量,类型信息放在变量名后面,初始化为零,如下: 在函数内部还有一种更简洁的:=定义方式 变量赋值,两个变量可直接交换 注意:函数内部定义的变量没使用的话编译器会报错 ...
- 玩转JavaScript OOP[0]——基础类型
前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...
- go基础知识之变量,类型,常量,函数
3 变量 变量是什么 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值.在 Go 中,有多种语法用于声明变量. 声明单个变量 var name type 是声 ...
- 1、Golang基础--Go简介、环境搭建、变量、常量与iota、函数与函数高级
1 Go语言介绍 1 golang-->Go--->谷歌公司 2009年 golang:指go语言,指的go的sdk goland:软件,ide:集成开发环境 Java写的 2 Go是静态 ...
- JavaScript学习笔记-基础语法、类型、变量
基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...
- JavaScript随笔记(一)基础概念以及变量类型
一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...
- 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
这小节我们将要介绍如何定义变量.常量.Go 内置类型以及 Go 程序设计中的一些技巧. 定义变量 Go 语言里面定义变量有多种方式. 使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不 ...
- 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字
『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...
- C#指南,重温基础,展望远方!(3)类型和变量
C# 有两种类型:值类型和引用类型. 值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用.对于引用类型,两个变量可以引用同一对象:因此,对一个变量执行的运算可能会影响另一个变 ...
随机推荐
- 三、git管理修改
一.修改提交 如下图,Git分工作区和版本库(.git隐藏目录中). 在每次修改后 git add "file name" 其实是把修改内容提交到本地版本库的 暂存区(stage) ...
- tcp付金卡黛珊李方军拉萨
进口量点卷啊首付款拉德斯基疯狂拉萨的
- 死磕nginx系列-nginx日志配置
nginx access日志配置 access_log日志配置 access_log用来定义日志级别,日志位置.语法如下: 日志级别: debug > info > notice > ...
- 1036. [ZJOI2008]树的统计【树链剖分】
Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. ...
- 用ASP.NET Web API技术开发HTTP接口
开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...
- M100(3) 无线数传
本文记录了无线数传配合地面Windos qt写的飞机控制SDK软件的使用过程 使用了两种类型无线数传 遇到问题 1 界面卡死问题 1.1 数传问题 问题描述: 使用非官方数传,点击active按键和一 ...
- stl vector、红黑树、set、multiset、map、multimap、迭代器失效、哈希表(hash_table)、hashset、hashmap、unordered_map、list
stl:即标准模板库,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法 六大组件: 容器.迭代器.算法.仿函数.空间配置器.迭代适配器 迭代器:迭代器(iterator)是一种抽象的设计 ...
- 常见的CSS属性和值CascadingStyleSheets
字体文本背景位置边框列表其他 CSS中修饰字体的属性 属 性 描 述 属 性 值 font-family 字体族科 任意字体族科名称都可以使用例如Times.serif等,而且多个族科 ...
- Waymo在美国推出自动驾驶汽车共享服务
导读 经过数月的测试和数百万英里的无人驾驶汽车技术开发,Waymo 正式在美国推出了具有商业性质的自动驾驶汽车的共享服务. 该公司的 Waymo One 项目将为客户提供 24 小时自动驾驶汽车服务. ...
- linux固定ip地址
最近自己搭jenkins发现ifconfig出来ip老是变来变去决定固定服务ip,原来配置: [root@bogon bin]# cat /etc/sysconfig/network-scripts/ ...