Golang基础学习笔记
1、下载安装
1.1、下载
Golang下载地址:https://golang.google.cn/dl/
1.2、安装
1.3、环境变量
# GOPATH
D:\GolandProjects
# GOPROXY
https://mirrors.aliyun.com/goproxy
# 启用Go模块支持
go env -w GO111MODULE=on
1.5、验证安装/配置
1.5、hello world
2、变量/常量
2.1、变量
package main
import "fmt"
func main() {
// var 变量名字 类型 = 表达式
// 单个变量定义
//var name string = "xumeng03!"
//var name = "xumeng03!"
//name := "xumeng03!"
var name string
name = "xumeng03"
fmt.Println("hello", name)
// 多个变量定义
//var name1, name2 = "xumeng", "xumeng03"
var (
name1 = "xumeng03"
name2 = "xumeng"
)
fmt.Println("hello", name1, name2)
}
2.2、常量
package main
import "fmt"
func main() {
// const 变量名字 类型 = 表达式
const name string="xumeng03"
// 报错
//name = "xumeng"
//const name1 string
//name1 = "aaa"
fmt.Println("hello", name)
}
3、基本数据类型
3.1、基本类型
数据类型 | 类型解释 | 默认零值 |
---|---|---|
bool | 布尔型,值为true 或false | false |
uint8 | 8位无符号整型,取值范围为0到255 | 0 |
uint16 | 16位无符号整型,取值范围为0到65535 | 0 |
uint32 | 32位无符号整型,取值范围为0到4294967295 | 0 |
uint64/uint | 64位无符号整型,取值范围为0到4294967295 | 0 |
int8 | 8位有符号整型,取值范围为-128到127 | 0 |
int16 | 16位有符号整型,取值范围为-32768到32767 | 0 |
int32 | 32位有符号整型,取值范围为-2147483648到2147483647 | 0 |
int64/int | 64位有符号整型,取值范围为-9223372036854775808到9223372036854775807 | 0 |
float32 | 32位浮点型,可以表示小数,精度为7位小数 | 0 |
float64 | 64位浮点型,可以表示小数,精度为15位小数 | 0 |
string | 字符串类型,由一串Unicode码点组成 | “” |
package main
import (
"fmt"
"math"
"strconv"
)
func main() {
// bool
var vbool bool
fmt.Printf("类型: %T,默认值: %t\n", vbool, vbool)
// uint8、uint16、uint32、uint64(uint)
var vuint uint
var vuint8 uint8
var vuint16 uint16
var vuint32 uint32
var vuint64 uint64
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint, vuint, 0, strconv.FormatUint(math.MaxUint, 10))
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint8, vuint8, 0, math.MaxUint8)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint16, vuint16, 0, math.MaxUint16)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint32, vuint32, 0, math.MaxUint32)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint64, vuint64, 0, strconv.FormatUint(math.MaxUint64, 10))
// int8、int16、int32、int64
var vint int
var vint8 int8
var vint16 int16
var vint32 int32
var vint64 int64
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint, vint, math.MinInt, math.MaxInt)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint8, vint8, math.MinInt8, math.MaxInt8)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint16, vint16, math.MinInt16, math.MaxInt16)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint32, vint32, math.MinInt32, math.MaxInt32)
fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint64, vint64, math.MinInt64, math.MaxInt64)
// float32、float64
var vfloat32 float32
var vfloat64 float32
fmt.Printf("类型: %T,默认值: %f\n", vfloat32, vfloat32)
fmt.Printf("类型: %T,默认值: %f\n", vfloat64, vfloat64)
// string
var vstring string
fmt.Printf("类型: %T,默认值: %s\n", vstring, vstring)
}
3.2、基本类型转换
只有类型兼容的才可以转换!
package main
import (
"fmt"
)
func main() {
var vint8 int8
var vint16 int16
//vint16 = vint8;
vint16 = int16(vint8);
fmt.Printf("类型: %T,值: %d", vint16, vint16)
// 大转小会有精度丢失问题
//var vint8 int8
//var vint16 int16 = 257
//vint8 = int8(vint16)
//fmt.Printf("类型: %T,值: %d", vint8, vint8)
}