Golang基础学习笔记
1、下载安装
1.1、下载
Golang下载地址:https://golang.google.cn/dl/
1.2、安装
1.3、环境变量
D:\GolandProjects
https://mirrors.aliyun.com/goproxy
go env -w GO111MODULE=on
1.5、验证安装/配置
1.5、hello world
2、变量/常量
2.1、变量
package main
import "fmt"
func main() {
var name string
name = "xumeng03"
fmt.Println("hello", name)
var (
name1 = "xumeng03"
name2 = "xumeng"
)
fmt.Println("hello", name1, name2)
}
2.2、常量
package main
import "fmt"
func main() {
const name string="xumeng03"
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() {
var vbool bool
fmt.Printf("类型: %T,默认值: %t\n", vbool, vbool)
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))
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)
var vfloat32 float32
var vfloat64 float32
fmt.Printf("类型: %T,默认值: %f\n", vfloat32, vfloat32)
fmt.Printf("类型: %T,默认值: %f\n", vfloat64, vfloat64)
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 = int16(vint8);
fmt.Printf("类型: %T,值: %d", vint16, vint16)
}
4、复合数据类型
5、运算符
5.1、算数运算符
package main
import (
"fmt"
)
func main() {
a := 9
b := 3
fmt.Printf("%d + %d = %d\n", a, b, a+b)
fmt.Printf("%d - %d = %d\n", a, b, a-b)
fmt.Printf("%d * %d = %d\n", a, b, a*b)
fmt.Printf("%d / %d = %d\n", a, b, a/b)
fmt.Printf("%d %% %d = %d\n", a, b, a%b)
c := 3
c++
fmt.Printf("%d\n", c)
c--
fmt.Printf("%d", c)
}
5.2、关系运算符
package main
import (
"fmt"
)
func main() {
a := 9
b := 3
c := 3
fmt.Printf("%d > %d ? %t\n", a, b, a > b)
fmt.Printf("%d < %d ? %t\n", a, b, a < b)
fmt.Printf("%d == %d ? %t\n", a, b, a == b)
fmt.Printf("%d >= %d ? %t\n", b, b, b >= c)
fmt.Printf("%d <= %d ? %t\n", a, b, a <= b)
fmt.Printf("%d != %d ? %t\n", b, b, b != c)
}
5.3、逻辑运算符
func main() {
a := 9
b := 3
c := 3
fmt.Printf("%b & %d = %b\n", a, b, b, c, a > b && b == c)
fmt.Printf("%d < %d || %d == %d ? %t\n", a, b, b, c, a < b || b != c)
}
5.4、位运算符
package main
import (
"fmt"
)
func main() {
a := 9
b := 3
fmt.Printf("%b & %b = %b\n", a, b, a&b)
fmt.Printf("%b | %b = %b\n\n", a, b, a|b)
fmt.Printf("%b ^ %b = %b\n", a, b, a^b)
fmt.Printf("^%b = %b\n", a, ^a)
fmt.Printf("%b &^ %b = %b\n", a, b, a&^b)
a = a << 2
fmt.Printf("9 << 2 = %b(%d)\n", a, a)
a = a >> 1
fmt.Printf("36 >> 1 = %b(%d)\n", a, a)
}
5.5、赋值运算符
package main
import (
"fmt"
)
func main() {
a := 9
b := 3
a += b
fmt.Printf("9 + 3 = %d\n", a)
a -= b
fmt.Printf("12 - 3 = %d\n", a)
}
6、输入/输出
6.1、输出
方法 |
说明 |
fmt.Print |
将参数打印输出到标准输出,不进行格式化处理,参数之间用空格分隔 |
fmt.Println |
将参数打印输出到标准输出,不进行格式化处理,参数之间用空格分隔,并在最后添加换行符 |
fmt.Printf |
通过格式化字符串和参数进行输出。格式化字符串中可以包含占位符(例如%s 、%d 等),用于指定参数的格式和位置 |
fmt.Sprintf |
通过格式化字符串和参数生成一个格式化后的字符串,而不是直接打印输出。返回生成的字符串,可以赋值给变量或作为其他函数的参数 |
package main
import "fmt"
func main() {
a := 11
fmt.Printf("类型: %T,值: %d,二进制值 %b,八进制值 %o,十进制值 %d,十六进制值 %x,十六进制值 %X\n", a, a, a, a, a, a, a)
b := "xumeng03"
fmt.Printf("类型: %T,值: %s\n", b, b)
c := 'A'
fmt.Printf("类型: %T,值: %c\n", c, c)
d := ""
fmt.Printf("类型: %T,地址: %p\n", d, &d)
}
6.2、输入
方法 |
说明 |
fmt.Scan |
从标准输入中读取输入,并将解析后的值存储到指定的变量中。它需要传入指向变量的指针作为参数,并以空格为分隔符进行解析 |
fmt.Scanf |
从标准输入中按照指定的格式字符串读取输入,并将解析后的值存储到指定的变量中。 |
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Print("请输入名称、年龄: ")
var a string
var b int64
fmt.Scanf("%s %d", &a, &b)
fmt.Println("hello", a+" "+strconv.FormatInt(b, 10)+"!")
}
7、流程控制
7.1、判断语句