01.数字类型
   
    
    
    1.1 Golang数据类型介绍
   
- 
     
 Go
 
 
 语言中数据类型分为
 
 :基本数据类型和复合数据类型
- 
     
 基本数据类型有:
 - 整型、浮点型、布尔型、字符串
 
- 
     
 复合数据类型有:
 - 数组、切片、结构体、函数、map、通道(channel)、接口
 
    
    
    1.2 整型分为两大类
   
- 有符号整形按长度分为:int8、int16、int32、int64
- 对应的无符号整型:uint8、uint16、uint32、uint64
     
   
- 
     
 关于字节:
 - 字节也叫 Byte,是计算机数据的基本存储单位。8bit(位)=1Byte(字节) 1024Byte(字节)=1KB
- 1024KB=1MB 1024MB=1GB
- 1024GB=1TB 。在电脑里一个中文字是占两个字节的。
 
    
    
    1.3 unsafe.Sizeof
   
- unsafe.Sizeof(n1) 是 unsafe 包的一个函数,可以返回 n1 变量占用的字节数
package main
import (
	"fmt"
	"unsafe"
)
func main() {
	var a int8 = 124
	fmt.Printf("%T\n", a)       // int8
    fmt.Println(unsafe.Sizeof(a))      // 1 (表示占用1个字节,也就是8 byte)
}
    
    
    1.4 int不同长度直接的转换
   
package main
import (
	"fmt"
)
func main() {
	var num1 int8
	num1 = 127
	num2 := int32(num1)   // 将num1类型转换成 int32 并赋值给num1
	fmt.Printf("值:%v 类型%T", num2, num2) //值:127 类型 int32
}
    
    
    1.5 浮点型
   
- Go 语言支持两种浮点型数:float32 和 float64
package main
import (
	"fmt"
	"math"
)
func main() {
	fmt.Printf("%f\n", math.Pi)    // 3.141593 (默认保留 6 位小数)
	fmt.Printf("%.2f\n", math.Pi)   // 3.14 (保留 2 位小数)
}
    
    
    1.6 reflect.TypeOf查看数据类型
   
package main
import (
	"fmt"
	"reflect"
)
func main() {
	c := 10
	fmt.Println( reflect.TypeOf(c) )   // int
}
    
    
    02.int互转
   
    
    
    2.0 int常用转换
   
package main
import (
	"fmt"
	"strconv"
)
func main()  {
	// string到int
	intV,_ := strconv.Atoi("123456")
	// string到int64
	int64V, _ := strconv.ParseInt("123456", 10, 64)
	// int到string
	strS := strconv.Itoa(123)
	// int64到string
	var tmp int64 =  123
	str64S:=strconv.FormatInt(tmp,10)
	
	fmt.Printf("%T--%T--%T--%T", intV, int64V, strS, str64S)
	// int--int64--string--string
}
    
    
    2.1 int8转int16
   
package main
import "fmt"
func main() {
	var a int8 = 20
	var b int16 = 40
	var c = int16(a) + b    //要转换成相同类型才能运行
	fmt.Printf("值:%v--类型%T", c, c)  //值:60--类型 int16
}
    
    
    2.2 int16转float32
   
package main
import "fmt"
func main() {
	var a float32 = 3.2
	var b int16 = 6
	var c = a + float32(b)
	fmt.Printf("值:%v--类型%T", c, c)  //值:9.2--类型 float32
}
    
    
    2.3 math.Sqrt强转
   
package main
import (
	"fmt"
	"math"
)
func main() {
	var a, b = 3, 4
	var c int
	// math.Sqrt()接收的参数是 float64 类型,需要强制转换
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)  // 5
}
    
    
    03.int与str转换
   
    
    
    3.1 int与str转换
   
package main
import (
	"fmt"
	"strconv"
)
func main() {
	//2.1 int64转str
	var num2 int64 = 123456
	str2 := strconv.FormatInt(num2, 10)
	fmt.Printf("%v---%T \n",str2,str2)  // 123456---string
	//2.2 str转int64
	v1, _ := strconv.ParseFloat(str2, 64)
	fmt.Printf("%v---%T\n",v1,v1)      // 123456---float64
}
    
    
    3.2 str与int64转换
   
package main
import (
	"fmt"
	"strconv"
)
func main() {
	//1.1 int转sting
	num1 := 123456
	str1 := strconv.Itoa(num1)
	fmt.Printf("%v---%T \n",str1,str1)  // 123456---string
	// 1.2 sting转int
	_int, err := strconv.Atoi(str1)
	fmt.Println(_int,err)  // 123456 <nil>
	fmt.Printf("%v---%T\n",_int,_int)   // 123456---int
	//2.1 int64转str
	var num2 int64 = 123456
	str2 := strconv.FormatInt(num2, 10)
	fmt.Printf("%v---%T \n",str2,str2)  // 123456---string
	//2.2 str转int64
	v1, _ := strconv.ParseFloat(str2, 64)
	fmt.Printf("%v---%T\n",v1,v1)      // 123456---float64
}
    
    
    04.布尔值
   
- Go 语言中以 bool 类型进行声明布尔型数据,布尔型数据只有 true(真)和 false(假)两个值。
- 
     注意:
- 1.布尔类型变量的默认值为 false。
- 2.Go 语言中不允许将整型强制转换为布尔型.
- 3.布尔型无法参与数值运算,也无法与其他类型进行转换。
 
package main
import (
	"fmt"
	"unsafe"
)
func main() {
	var b = true
	fmt.Println(b, "占用字节:", unsafe.Sizeof(b))  // true 占用字节: 1
}
 
版权声明:本文为fushan2012原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
