Chapter02 Golang变量以及数据类型
程序员文章站
2022-03-22 23:17:09
...
本章纲要
一、变量使用方式
1.指定变量类型,申明后不是用默认值
(1)int 默认 0
(2)string默认 空串
(3)float默认 float64 0
(4)bool faulse
2.根据值判断类型
ar num = 10.11
3.省略var
且‘=’左边的变量不应该是已经申明的,即不能重复申明,不然会报错。
name:="tom”
4.可多变量申明
① 直接法
var n1,n2,n3 int
② 对应法
var n1,n2,n3 = 100,"tom",888
③ 类型推导法
n1,n2,n3 := 100,"tom",888
④ 一次性申明全局变量
即在函数外声明变量
二、 “+”的使用
(1)数值:数学加法
(2)字符串:拼接
三、数据类型介绍
(一)基本数据类型以及介绍
1.数值型
(1)整数型
- 有些有符号位eg: int8
- 定义变量下 保小不保大,节省空间,但是要溢出,结果可能不同,所以考虑范围。
- 1bite = 8bit
- 查看a变量的数据类型和占用 字节 大小
数据类型
fmt.Printf("%T",a)
字节(引包)
package main
import (
"unsafe"
)
func main(){
var a int64 = 60.23
fmt.Printf("%d",unsafe.Sizeof(a))
}
(2)浮点型 float32 float64(小数类型)
5. 浮点数都是有符号位
6. 尾数位可能精度损失
7. 科学计数法
num :=5.1234e2 //10^2
num :=5.1234E2 //10^2
num :=5.1234E-2 //10^(-2)
2.字符型(char)
- 无专门字符型,只能用byte,保存单个字符,所以汉字存不下一位,可以用rune保存(int32别名),表示一个unicode码点。
(go:utf-8)
var c1 byte = 'a'
- 直接输出字符,则输出码值
fmt.Printf("c1=",c1)
- 输出字符值,则格式化输出
fmt.Printf("c1=%c",c1)
- 汉字
var c3 byte = "北" //溢出
fmt.Printf("c1=%c",c1)
var c3 int = "北" //成功
fmt.Printf("c1=%c",c1)
如果保存的字符是在ASCII,直接保存到byte,若>225,则考虑int
注意输出值时,格式化输出
查看码值 http://www.mytju.com/classcode/tools/encode_utf8.asp
3.布尔bool
- 真假逻辑,只占一个字节
var b = false
- 应用:
if
for
4.字符串 string
- go的字符串由字节组成
var adress string = "中国 hello"
- golang字符串是不可变的,一旦赋值不可更改
eg: adress[0] = 'a' 是错的
- 双引号识别转义字符
- 反引号以字符原生形式输出,包括换行和特殊字符,例如输出源代码,防止攻击。
str:=`
package main
import (
"fmt"
"unsafe"
)
func main(){
var b =false
fmt.Println("b=",b)
}
`
fmt.Printfln(str)
- 当拼接很长时,可以分行写,但每一行必须以+结尾。
(二)数据结构
(1)指针
(2)数组
(3)结构体
(4)管道
(5)函数
(6)切片
(7)接口
(8)map
(三)数据类型转换(基本数据类型)
var i int32 = 100 //赋值
var n1 float32 = float32(i) //转换
- 被变量转换的是变量存储的数据,变量本身的数据结构没有变
- int64->int8,不会报错,但是会按照溢出处理
-
基本数据类型与string的转换
①数据类型转string
(1)fmt.Sprintf("%参数",表达式) ————推荐
查看官方文档 https://studygolang.com/pkgdoc
//数据相互转换
package main
import (
"fmt"
_ "fmt"
_ "unsafe"
)
func main(){
var num1 int =90
var num2 float64 = 23.456
var b bool = true
var myChar byte = 'h'
var str string //空的字符串
//方法一
str = fmt.Sprintf("%d",num1)
fmt.Printf("str type %T str=%q\n" ,str,str)
str = fmt.Sprintf("%f",num2)
fmt.Printf("str type %T str=%q\n" ,str,str)
str = fmt.Sprintf("%t",b)
fmt.Printf("str type %T str=%q\n" ,str,str)
str = fmt.Sprintf("%c",myChar)
fmt.Printf("str type %T str=%q\n" ,str,str)
(2)strconv包的使用
//数据相互转换
package main
import (
"fmt"
_ "fmt"
"strconv"
_ "unsafe"
)
func main(){
var num1 int =90
var num2 float64 = 23.456
var b bool = true
var myChar byte = 'h'
var str string //空的字符串
//方法二 strconv函数
var num3 int =90
var num4 float64 = 23.456
var b2 bool = true
str = strconv.FormatInt(int64(num3),10)
fmt.Printf("str type %T str=%q\n" ,str,str)
str = strconv.FormatFloat(num4,'f',10,64)
fmt.Printf("str type %T str=%q\n" ,str,str)
str = strconv.FormatBool(b2)
fmt.Printf("str type %T str=%q\n" ,str,str)
}
②string转数据类型
未完待续,估计2019/11/16完成基础系列
上一篇: 怎么样在附近出现小程序
下一篇: 怎么解决php读取文件乱码问题