go 的基本数据类型和结构
// 变量命名方式
当用两个或两个以上的单词命名变量时,可以将除第一个单词以外的所有单词的首字母大写
package 命名方式
全部小写
不加 _
布尔类型:bool
整型:int8、byte、int16、int、uint、uintptr 等
浮点类型:float32、float64
复数类型:complex64、complex128
字符串:string
字符类型:rune
错误类型:error
Go 语言也支持以下这些复合类型:
指针(pointer)
数组(array) len() 数组长度
切片(slice) make(type, i, j) type为类型 i创建一个初始元素个数为i的数组切片 j预留 j 个元素的存储空间(容量为j) len()返回切片的长度 cap() 返回存储空间长度
字典(map)
通道(chan)
结构体(struct)
接口(interface)
time包
Now() 当前时间
Date(year, month, day, day ...)指定时间
(T time)Format("2006/1/2 15:04:05") 格式化
Parse() string -> time
file的操作
os.Stat 打开文件
file.Name() 文件名
file.Size() 大小
IsDir
数据类型: 整型及运算符
类型 长度(单位:字节) 说明 值范围 默认值
int8 1 带符号8位整型 -128~127 0
uint8 1 无符号8位整型,与 byte 类型等价 0~255 0
int16 2 带符号16位整型 -32768~32767 0
uint16 2 无符号16位整型 0~65535 0
int32 4 带符号32位整型,与 rune 类型等价 -2147483648~2147483647 0
uint32 4 无符号32位整型 0~4294967295 0
int64 8 带符号64位整型 -9223372036854775808~9223372036854775807 0
uint64 8 无符号64位整型 0~18446744073709551615 0
int 32位或64位 与具体平台相关 与具体平台相关 0
uint 32位或64位 与具体平台相关 与具体平台相关 0
uintptr 与对应指针相同 无符号整型,足以存储指针值的未解释位 32位平台下为4字节,64位平台下为8字节 0
注:++ 或 -- 只能出现在语句中,不能用于表达式,故不参与优先级判断。
go for 循环中 最好还是用 range
for i, ch := range str
自带的strconv 包
查看 接口 go doc strconv
常用的
string和int的转换
int转换为字符串:Itoa()
string转换为int:Atoi() func Atoi(s string) (int, error)
Parse类函数
Parse类函数用于转换字符串为给定类型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。
Format类函数
将给定类型格式化为string类型:FormatBool()、FormatFloat()、FormatInt()、FormatUint()。
Append类函数
AppendTP类函数用于将TP转换成字符串后append到一个slice中:AppendBool()、AppendFloat()、AppendInt()、AppendUint()。
q := strconv.Quote("Hello, 世界") // 为字符串加引号
q := strconv.QuoteToASCII("Hello, 世界") // 将字符串转化为 ASCII 编码
字典类型的声明、初始化和基本使用
type Integer int
注意,这个时候 Integer 已经是一个新的类型了,这与 type Integer = int 不同,后者只是为 int 类型设置一个别名。
通过 channel 进行消息传递
通道看作是一个先进先出(FIFO)的队列,通道中的元素会严格按照发送顺序排列,继而按照排列顺序被接收,通道元素的发送和接收都可以通过 <- 操作符来实现,发送时元素值在右,通道变量在左
ch <- 1 // 表示把元素 1 发送到通道 ch
接收时通道变量在右,可以通过指定变量接收元素值
element := <-ch
defer
延迟函数调用的用法
func main(){
defer func() { fmt.Println("延迟调用") }()
fmt.Println("正常调用")
}
正常代码
延迟调用
func main(){
defer func() { fmt.Println("延迟调用1") }()
defer func() { fmt.Println("延迟调用2") }()
fmt.Println("正常代码")
}
正常代码
延迟调用2
延迟调用1
url: https://blog.csdn.net/java_code_net/article/details/94976939
存储类型
值类型: int float string bool array struct
引用类型:slice(切片) map
指向数组的指针 可以直接p[]
通道
ch := make(chan int) // 双向通道
ch2 := make(chan <- int) // 单向 只能写 不能读
ch3 := make(<- chan int) // 单向 只能读 不能写
go 的基本数据类型和结构的更多相关文章
- Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结
Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结 1. 数据结构( 树形结构,表形数据,对象结构 ) 1 2. 编程语言中对应的数据结构 jav ...
- Python3.7.4入门-0/1To Begin/数据类型与结构
0 To Begin //:向下取整除法 **:乘方 在交互模式下,上一次打印出来的表达式被赋值给变量 _ 如果不希望前置了 \ 的字符转义成特殊字符,可以使用 原始字符串 方式,在引号前添加 r 即 ...
- hive笔记:复杂数据类型-map结构
map 结构 1. 语法:map(k1,v1,k2,v2,…) 操作类型:map ,map类型的数据可以通过'列名['key']的方式访问 案例: select deductions['Feder ...
- c++基础(一):数据类型和结构
1.map map<int, int> rankDict;//定义map rankDict[1] = 5; rankDict[2] = 6;//map赋值 int dictSize = r ...
- C语言-06复杂数据类型-04 结构体
结构体的说明(构造类型) 数组:只能由多个相同类型的数据构成 结构体:可以由多个不同类型的数据构成 ,结构体的类型是不存在的,自己定义 int main() { // 1.定义结构体类型 定义类型的时 ...
- hive笔记:复杂数据类型-array结构
array 结构 (1)语法:array(val1,val2,val3,…) 操作类型:array array类型的数据可以通过'数组名[index]'的方式访问,index从0开始: (2)建表: ...
- C# 中数据类型以及结构
值类型:int.double.char.bool...,结构. 引用类型:类(string).接口.数组 Class1.cs using System; using System.Collection ...
- python入门(二):数据类型和结构
Python3 中有六个标准的数据类型:tips:用type()函数或者是isinstance(x,int)来判断数据类型,然后for i in 来遍历集合1.Number(数字支持 int.floa ...
- 自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}
一.结构体类型 结构体类型,共用体类型,枚举类型,类类型等统称为自定义类型(user-defined-type,UDT). 结构体相当于其他高级语言中的记录(record);例如: struct St ...
随机推荐
- python 之 列表常用 操作
- 42、JDBC数据源案例
一.JDBC数据源案例 1.概述 Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据.读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种 ...
- ubuntu16.04解决文件中文乱码问题
1.查看当前系统使用的字符编码 ~$ locale LANG=en_US LANGUAGE=en_US: LC_CTYPE="en_US" LC_NUMERIC="en_ ...
- 中山纪中集训Day4双是测试(划沝) 九校联考-DL24凉心模拟Day2
A组T1 锻造 (forging) 1.1 题目背景 勇者虽然武力值很高,但在经历了多次战斗后,发现怪物越来越难打于是开始思考是不是自己平时锻炼没到位,于是苦练一个月后发现......自己连一个史莱姆 ...
- zabbix代理
一.概述 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix ...
- LeetCode 第 159 场周赛
一. 缀点成线(LeetCode-5230) 1.1 题目描述 1.2 解题思路 比较简单的一题,利用公式 y = kx + b,确定好k和b就好,并且要考虑一种情况,函数 x = h. 1.3 解题 ...
- tensorflow中的函数获取Tensor维度的两种方法:
获取Tensor维度的两种方法: Tensor.get_shape() 返回TensorShape对象, 如果需要确定的数值而把TensorShape当作list使用,肯定是不行的. 需要调用Tens ...
- ubuntu之路——day7.1 衡量模型好坏的因素偏差和方差bias&variance 以及在深度学习中的模型优化思路
Error | 误差 Bias | 偏差 – 衡量准确性 Variance | 方差 – 衡量稳定性 首先我们通常在实际操作中会直接用错误率或者与之对应的准确率来衡量一个模型的好坏,但是更加准确的做法 ...
- Java利用FastJson一行代码转List<Map>为List<Bean>
/** * 字符串 -> json对象.实体对象.Map.List.List<Map> */ // 字符串 -> json对象 JSONObject json = JSON.p ...
- 前端通用下载文件方法(兼容IE)
之前在网上看到一个博主写的前端通用的下载文件的方法,个人觉得很实用,所以mark一下,方便以后查阅 源文地址(源文还有上传/下载excel文件方法) 因为项目要求要兼容IE浏览器,所以完善了一下之前博 ...