go语言学习2:数据类型

130 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第18天,点击查看活动详情

数据类型

在Go语言中 byte与uint8 是一样的,rune与int32是一样的,代表同一种数据类型。但是int和int64 不是同一种类型。

make()与new() 的区别

make()是Go语言中的内置函数,主要用于创建并初始化slice切片类型,或者map字典类型,或者channel通道类型数据。他与new方法的区别是。new用于各种数据类型的内存分配,在Go语言中认为他返回的是一个指针。指向的是一个某种类型的零值。make 返回的是一个有着初始值的非零值。

sync.map的使用

map在Go语言并发编程中,如果仅用于读取数据时候是安全的,但是在读写操作的时候是不安全的,在Go语言1.9版本后提供了一种并发安全的,sync.Map是Go语言提供的内置map,不同于基本的map数据类型,所以不能像操作基本map那样的方式操作数据,他提供了特有的方法,不需要初始化操作实现增删改查的操作。

package main

import (
   "fmt"
   "sync"
)

//声明sync.Map
var syncmap sync.Map

func main() {

   //Store方法将键值对保存到sync.Map
   syncmap.Store("zhangsan", 97)
   syncmap.Store("lisi", 100)
   syncmap.Store("wangmazi", 200)

   // Load方法获取sync.Map 键所对应的值
   fmt.Println(syncmap.Load("lisi"))

   // Delete方法键删除对应的键值对
   syncmap.Delete("lisi")

   // Range遍历所有sync.Map中的键值对
   syncmap.Range(func(k, v interface{}) bool {
      fmt.Println(k, v)
      return true
   })

}

整型

数据类型说明取值范围
有符号整数
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

占位符号

占位符说明举例输出
%d十进制的数字fmt.Printf("%d",10)10
%T取类型b :=true fmt.Printf("%T",b)bool
%s取字符串s :="123" fmt.Printf("%s",s)123
%t取bool类型的值b:=true fmt.Printf("%t",b)true
%p取内存地址p :="123" fmt.Printf("%p", &p)0xc0000461f0