go学习3 数据类型

package main

import "fmt"

func main(){
	/*
	go语言的数据类型
	1.基本数据类型
		布尔类型:bool
			取值:true,false
		数据类型:
			整数:int
				有符号:最高位表示符号,0正数1负数,其余表示数值
					•int8 有符号 8 位整型 (-128 到 127) 长度:8bit
					•int16 有符号 16 位整型 (-32768 到 32767)
					•int32 有符号 32 位整型 (-2147483648 到 2147483647)
					•int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
				无符号:所有位置表示数据
					•uint8 无符号 8 位整型 (0 到 255) 8位都用于表示数值:
					•uint16 无符号 16 位整型 (0 到 65535)
					•uint32 无符号 32 位整型 (0 到 4294967295)
					•uint64 无符号 64 位整型 (0 到 18446744073709551615)

				int,uint

				byte:unit
				rune:int32

			浮点:生活中的小数
				float32,float64
			复数

		字符串类型:
		1.概念:多个byte的集合,理解为一个字符序列
		2.语法:使用双引号"" `` ''
	 	3.编码问题
				计算机本质只识别0,1
				A:65
				a:97
			ASCII

			中国的编码表gbk,兼容ASCII:
			Unicode编码库:包含全部
				utf-8,utf-16
		4.转义字符
			有一些字符有特殊的作用,可以转移为普通字符不起作用
				前面加\
			有一些字符,普通字符,但转义后由特殊作用
				\n,换行
				\t,制表符

	2.复合数据类型
		array,slice,map,function,
		pointer,struct,interface,channel
	 */
	var b1 bool
	b1 = true
	fmt.Printf("%T,%t\n",b1,b1)
	b2 := false
	fmt.Printf("%T,%t\n",b1,b2)

	var i1 int8
	i1 = 100
	fmt.Println(i1)
	var i2 uint8
	i2 = 200
	fmt.Println(i2)

	var i3 int
	i3 = 1000
	fmt.Println(i3)
	//语法角度,int,int64不认同为同一种语言
	//var i4 int64
	//i4 = i3 //cannot use i3 (type int) as type int64 in assignment

	var i5 uint8
	i5 = 100
	var i6 byte
	i6 = i5
	fmt.Println(i5,i6)

	var i7 = 100
	fmt.Println("%T,%d\n",i7,i7)

	var f1 float32
	f1 = 3.14
	var f2 float64=4.67
	fmt.Printf("%T,%.2f\n",f1,f1)
	fmt.Printf("%T,%.3f\n",f2,f2)
	fmt.Println(f1)

	var f3 =100.12
	fmt.Println(f3)

	var s1 string
	s1 = "asds"
	fmt.Printf("%T,%s\n",s1,s1)

	s2 := `hello`
	fmt.Printf("%T,%s\n",s2,s2)

	//区别
	v1 := 'A'
	v2 := "A"
	fmt.Printf("%T,%d\n",v1,v1)
	fmt.Printf("%T,%s\n",v2,v2)

	v3 := "中文"
	fmt.Printf("%T,%d,%c,%q\n",v3,v3,v3,v3)

	fmt.Println("\"helloworld\"")

	fmt.Println("hello\nwor\tld")

	fmt.Println(`hell"owor"ld`)

	/*
	数据类型转换
	go语言是静态语言,定义赋值运算必须类型一致
	语法格式 type(value)

	注意:兼容的类型才可以转换(bool就不可以转换)
	常数:在有必要的时候自动转换
	变量:需要我们手动转换才行
	 */

	var g int8
	g = 10

	var k int16
	k = int16(g)
	fmt.Println(g,k)

	u := 4.88
	o := int(u)
	fmt.Println(u,o)

	//b1 := true
	//a = int8(b1) cannot convert b1 (type bool) to type int8

	fn := 4.88
	sum := f1+100
	fmt.Println("%T,%f,%f\n",fn,sum,sum)
}

GOROOT=D:\Go #gosetup
GOPATH=D:\GO_WorkSpace #gosetup
D:\Go\bin\go.exe build -o C:\Users\lenovo\AppData\Local\Temp\___go_build_awesomeProject_src_hello__3_.exe D:/GO_WorkSpace/src/awesomeProject/src/hello/datatype.go #gosetup
C:\Users\lenovo\AppData\Local\Temp\___go_build_awesomeProject_src_hello__3_.exe #gosetup
booltrue
boolfalse
100
200
1000
100 100
%T,%d
 100 100
float32,3.14
float64,4.670
3.14
100.12
string,asds
string,hello
int32,65
string,A
string,%!d(string=中文),%!c(string=中文),"中文"
"helloworld"
hello
wor	ld
hell"owor"ld
10 10
4.88 4
%T,%f,%f
 4.88 103.14 103.14

Process finished with exit code 0

你可能感兴趣的:(go学习3 数据类型)