go语言学习笔记二 数据类型,变量,数据类型转换

数据类型

类型 描述 范围
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.float32string: num3=11.11 float32; str=11.11 string
5.boolstring: num3=true bool; str=true string
6.int转string: num3=99 int; str=99 string
7.float32string: num3=11.11 float32; str=11.11 string
8.boolstring: 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

go标准库中文文档

猜你喜欢

转载自blog.csdn.net/qq_38165374/article/details/105206667