分享
  1. 首页
  2. 文章

Go 语言学习笔记 -第3章 基本数据类型

Mark110 · · 932 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go 语言学习笔记 -第3章

[toc]

基本数据类型

数值型
整数类型
int, int8(1字节), int16(2字节), int32(3字节), int64(4字节);

int8范围: -2的七次方 到2的七次方 - 1
xxxx
xxx
xxx

uint, uint8, uint16, uint32, unit64, byte

uint8范围:0 到2的8次方-1
xxxx
以此类推

rune ~ 等价int32, 表示一个unicode

byte 0~255

浮点类型 float32, float64

字符型:没有专门的字符型,使用byte来保存单个字母字符

布尔型: bool

字符串:string

派生、复杂数据类型

指针
数组
结构体
管道
函数
切片
接口
map

备注:

1、查看某个变量的数据类型

package main
import "fmt"
func main() {
 var n1 = 100
 fmt.Printf("n1类型:%T", n1)
}
//n1类型:int

2、整型默认声明类型为int

package main
import (
 "fmt"
 "unsafe"
)
func main() {
 var n1 = 100
 fmt.Printf("n1 的 类型:%T, 占用的字节数:%d", n1, unsafe.Sizeof(n1))
}
//n1 的 类型:int, 占用的字节数:8

3、变量在使用时,尽量使用占用空间小的数据类型

4、bit 计算机中的最小存储单位

 byte 计算机中基本存储单元

1 byte = 8 bit

5、浮点数 = 符号位+指数位+尾数位 //这怎么理解?
浮点默认声明 float64类型

可能有精度损失?

float64精度比float32更准确

看一个例子:

package main
import (
 "fmt"
)
func main() {
 var price1 float32 = -123.0000901
 var price2 float64 = -123.0000901
 fmt.Println("price1=", price1) //price1= -123.00009
 fmt.Println("price2=", price2) //price2= -123.0000901
}

6.字符使用

如果保存的字符在ASCII表的, 比如[0-1, a-z, A-Z..] 直接保存到byte

对应码值大于255, 可以考虑使用int类型

package main
import (
 "fmt"
)
func main() {
 //var price byte = '北' //overflow溢出
 var price int = '北'
 fmt.Println("price=", price) //返回97
 fmt.Printf("price=%c", price) //返回a
}

存储:字符->对应码值->二进制->存储
读取: 二进制->码值->字符->读取

GO编码统一utf8

7、字符串是不可变的

package main
import (
 "fmt"
)
func main() {
 var str = "hello world"
 str[0] = 'a' //报错
 fmt.Println("str=", str)
}

字符串的表示方式

1)双引号, 会识别转义字符

2)反引号, 以字符串的原生形式输出,包括换行和特殊字符

package main
import (
 "fmt"
)
func main() {
 str := "hello\nworld"
 fmt.Println("str=", str)
 str1 := `
 package main
import (
 "fmt"
)
func main() {
 str := "hello\nworld"
 fmt.Println("str=", str)
 `
 fmt.Println("str1=", str1)
}

字符串拼接:

package main
import (
 "fmt"
)
func main() {
 str := "hello\nworld" +
 "你好"
 fmt.Println("str=", str)
}

go语言中int和byte转换

判断进制存储:

package main
import (
 "fmt"
 "strconv"
)
func main() {
 n := int64(123)
 fmt.Println(strconv.FormatInt(n, 2)) //1111011
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Mark110

查看原文:Go 语言学习笔记 -第3章 基本数据类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
932 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏