• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

2、Golang数据类型

Data: 2019-06-02 22:12:33Form: JournalClick: 4

golang数据类型

  • golang 的数字类型明确标注了长度、有无符号
  • golang 不会帮你做类型转换,类型不同无法通过编译。也因此,string 只能和string 拼接
  • golang 有一个很特殊的 rune 类型,接近一般语言的 char 或者 character 的概念,非面试情况下,可以理解为 “rune = 字符”
  • string 遇事不决找 strings 包

数据类型-string 类型

  • string是所有8位字节字符串的集合,通常但不一定代表UTF-8编码的文本
  • 字符串可以为空,但不能为 nil (Type类型的空值),此处的字符串为空是 ""
  • string 类型的底层是一个byte 数组

string的基本操作

  • 同其他语言一样,输出需要双引号包裹起来,则内部双引号需要使用\转义
  • `引号包裹起来,则内部`需要\转义
  • string长度计算长度一般用 len(str)获取【中文占位3~4字符】,如需要计算非ASC II字符(中文)数量需要编码处理,则用编码库计算
  • string 的拼接直接使用 + 号就可以。注意的是,某些语言支持 string 和别的类型拼接,但是golang 不可以,只能数据同类型相加,非同字符如“ABC”+123 将报错,需要123转换为字符才可相加
  • 需要字符处理时可以导入strings包,方法包括: 查找和替换、大小写转换、相等、子字符串相关等

一些string包的用法:

//判断s1的前缀是否是H
fmt.Println(strings.HasPrefix(s1,"H"))
//在s1中查找字符串o
fmt.Println(strings.Index(s1,"o"))
//把s1全部转为大写
fmt.Println(strings.ToUpper(s1))

【官方string包文档】

 

数据类型-rune 类型

rune类型是Go语言中的一个基本类型,其实就是一个int32的别名,主要用于表示一个字符类型大于一个字节小于等于4个字节(一个 UTF-8 字符)的情况下,特别是中文字符。

  • rune,直观理解,就是字符
  • rune 不是 byte!
  • rune 本质是 int32,一个 rune 四个字节
  • rune 在很多语言里面是没有的,与之对应的是,golang 没有 char 类型。rune 不是数字,也不是 char,也不是 byte!
  • rune对处理中文、日文或者其他复合字符时操作更友好
  • 默认创建字符类型时,不定义属性时默认选用rune类型

 

数据类型-byte 类型

  • byte,字节,本质是 uint8,表示ASCII码的 1个字节
  • 对应的操作包在 bytes 上
  • 可以理解为 byte是ASCII编码字符,rune是utf-8字符

 

其他数据类型

  • bool: true, false
  • int8(占用1个字节), int16(占用2个字节), int32(占用4个字节), int64(占用8个字节), int(随着操作系统变化)
  • uint8, uint16, uint32, uint64, uint(占用字节同int类型,区别是无符号)

  • float32(单精度类型,占用4字节除小数点外有效数字为7位,只能精确到小数后6位), float64(双精度类型,占用8字节除小数点外有效数字为16位,只能精确到小数后15位)

类型互转可以借助strconv包

 

变量声明 & 常量声明(创建变量)

var | const,语法:var | const name type = value

  • 不定义类型时,golang会自动判断类型,如 字符为string,数字为int,浮点数为float64
  • var xxx= 可缩写为 xxx :=,但此方法只可用于局部变量,同时简写方式创建多变量时(xxx,xx2:= ),中间用逗号隔开
  • 同时需要创建多个 变量|常量 时可用 var()|const() 方式创建,多个参数换行隔开,且创建是也可设定计算属性,如:

          

  • 变量命名只支持驼峰命名法
  • 首字符是否大写控制了访问性:大写包外可访问
  • 变量声明后不用或者类型不匹配、多次变量声明都会导致报错
  • 常量与其他编程语言一样,声明以后不可再次修改
  • 变量名使用空白标识符 ('_') 可以赋给任何类型的任何值或用任何类型的值声明。空白标识符会被舍弃,不会被编译器使用。例如,当您想要捕获返回值但不打算在以后使用此值时,可以考虑使用空白标识符。

       

Name:
<提交>