数据类型
类型 | 描述 | 范围 |
---|---|---|
uint8 | 无符号 8 位整型 | 0 到 255 |
uint16 | 无符号 16 位整型 | 0 到 65535 |
uint32 | 无符号 32 位整型 | 0 到 4294967295 |
uint64 | 无符号 64 位整型 | 0 到 18446744073709551615 |
int8 | 有符号 8 位整型 | -128 到 127 |
int16 | 有符号 16 位整型 | -32768 到 32767 |
int32 | 有符号 32 位整型 | -2147483648 到 2147483647 |
int64 | 有符号 64 位整型 | -9223372036854775808 到 9223372036854775807 |
float32 | IEEE-754 | 32位浮点型数 |
float64 | IEEE-754 | 64位浮点型数 |
complex64 | 复数 | 32 位实数和虚数 |
complex128 | 复数 | 64 位实数和虚数 |
byte | 类似 uint8 | - |
rune | 类似 int32 | - |
uint | 平台相关 | 32 或 64 位 |
int | 平台相关 | 32 或 64 位 |
uintptr | 无符号整型,用于存放一个指针 | - |
1.变量的定义
package main
import "fmt"
func main() {
// 1 定义一个变量不初始化
var n1 int
n1 = 1
// 定义一个变量同时初始化
var n2 string = "2"
// 定义变量同时初始化的简写
var n3 = 3
// 定义多个变量
var n4, n5 = 4, "5"
// 只可以在函数中定义变量的方法
n6 := 6
fmt.Println(n1, n2, n3, n4, n5, n6)
}
输出
1 2 3 4 5 6
2.基本数据类型转换
package main
import (
"fmt"
"strconv"
)
func main() {
// 基本数据类型相互转换
var i int = 100
var n1 float32 = float32(i)
// 被转换的是变量存储的数值,变量本身数据类型并没有变化(i int, n1 float32)
fmt.Printf("1.i=%v %T n1=%v %T\n", i, i, n1, n1)
// 转换时需要注意类型范围,如果大范围转换为小范围则输出结果按溢出处理
var num1 int64 = 9999999999
var num2 int8 = int8(num1)
fmt.Printf("2.i=%v %T n1=%v %T\n", num1, num1, num2, num2)
// 基本数据类型转string 使用fmt包转换
var num3 int = 99
var num4 float32 = 11.11
var b1 bool = true
var str string
str = fmt.Sprint(num3)
fmt.Printf("3.int转string: num3=%v %T; str=%v %T\n", num3, num3, str, str)
str = fmt.Sprint(num4)
fmt.Printf("4.float32转string: num3=%v %T; str=%v %T\n", num4, num4, str, str)
str = fmt.Sprint(b1)
fmt.Printf("5.bool转string: num3=%v %T; str=%v %T\n", b1, b1, str, str)
// 使用strconv包转换
str = strconv.FormatInt(int64(num3), 10)
fmt.Printf("6.int转string: num3=%v %T; str=%v %T\n", num3, num3, str, str)
// float64, fmt 输出格式, prec 精度 float64
str = strconv.FormatFloat(float64(num4), 'f', 2, 64)
fmt.Printf("7.float32转string: num3=%v %T; str=%v %T\n", num4, num4, str, str)
str = strconv.FormatBool(b1)
fmt.Printf("8.bool转string: num3=%v %T; str=%v %T\n", b1, b1, str, str)
//使用strconv包 string 转化基本类型
var str1 string = "10"
var str2 string = "true"
var str3 string = "3.1415926"
// base 进制,bitSize int8,int32,int64
num6, _ := strconv.ParseInt(str1, 10, 64)
fmt.Printf("9.str转换int64:str=%v %T; num6=%v %T\n", str1, str1, num6, num6)
b2, _ := strconv.ParseBool(str2)
fmt.Printf("10.str转换bool:str=%v %T; num6=%v %T\n", str2, str2, b2, b2)
f1, _ := strconv.ParseFloat(str3, 64)
fmt.Printf("11.str转换float:str=%v %T; num6=%v %T\n", str3, str3, f1, f1)
}
输出
1.i=100 int n1=100 float32
2.i=9999999999 int64 n1=-1 int8
3.int转string: num3=99 int; str=99 string
4.float32转string: num3=11.11 float32; str=11.11 string
5.bool转string: num3=true bool; str=true string
6.int转string: num3=99 int; str=99 string
7.float32转string: num3=11.11 float32; str=11.11 string
8.bool转string: num3=true bool; str=true string
9.str转换int64:str=10 string; num6=10 int64
10.str转换bool:str=true string; num6=true bool
11.str转换float:str=3.1415926 string; num6=3.1415926 float64