• 二、GoLang输出HelloWorld、基本数据类型、变量常量定义、基本类型转换


    一、输入Hello World

    go语言中,想要输出内容到控制台,package必须是main,包括方法名也必须是main,
    go语言输出的语法是 fmt 库。

    package main
    
    import "fmt"
    
    func main() {
    	// go语言中 输出内容 使用的库是 fmt库
    	fmt.Println("Hello world")
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、变量的基本类型

    Go语言的基本类型有:

    1. boolean:布尔类型 true / false

    2. string :字符串类型

    3. 数值型:

      • int8:有符号8位整型(-128到127)长度
      • int16:有符号16位整型(-32768到32767)长度
      • int32:有符号32位整型(-2147483648到2147483647)长度
      • int64:有符号64位整型(-9223372036854775808到9223372036854775807)长度
      • uint8:无符号8位整型(0到255)
      • uint16:无符号16位整型(0到65535)
      • uint32:无符号32位整型(0到4294967295)
      • uint64:无符号64位整型(0到18446744073709551615)
    4. 浮点型

      • float32:32位浮点型数字
      • float64:64位浮点型数字
    5. byte:等同于 uint8

      主要适用于存储字符,存储的是字符的 ASCII码

    6. rune:等同于 int32

      也是用于存储字符的,存储的是字符的 ASCII码,但是比byte长度大,比如中文使用byte可能会导致存储不下,这个时候可以使用rune类型

    当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。

    package main
    
    import "fmt"
    
    /*
    *
    go语言中基本数据类型分为:
    
    	bool、字符和string、数值类型(整数:int、浮点数: float、byte字节 其实也是int、rune类型其实也是 int )
    */
    func main() {
    
    	// 整数
    	var number1 int8
    	var number2 int16
    	var number3 int32
    	var number4 int64
    
    	var number5 uint8
    	var number6 uint16
    	var number7 uint32
    	var number8 uint64
    
    	//这个int是个 动态类型 如果操作类型是 64 那么这里就是 int64 如果操作系统是 32 那么就是 int32
    	//同意的道理 uint 也是
    	var number9 int
    
    	//浮点数
    	var number10 float32
    	var number11 float64
    
    	fmt.Println(number1)
    	fmt.Println(number2)
    	fmt.Println(number3)
    	fmt.Println(number4)
    	fmt.Println(number5)
    	fmt.Println(number6)
    	fmt.Println(number7)
    	fmt.Println(number8)
    	fmt.Println(number9)
    	fmt.Println(number10)
    	fmt.Println(number11)
    
    	// -------------------- byte 类型 就是 uint8
    	// 主要适用于存储字符,存储的是字符的 ASCII码
    	var number12 byte
    	number12 = 'a'
    	fmt.Println(number12)
    	// -------------------- rune 类型 就是 int32
    	// 也是用户存储字符的但是比byte长度大,比如中文使用byte可能会导致存储不下,这个时候可以使用rune类型
    	var number13 rune
    	number13 = '酿'
    	fmt.Println(number13)
    
    	// ------------------------------ 字符串类型
    	var name string
    	name = "这是一个字符串类型"
    	fmt.Println(name)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    三、定义变量

    Go语言中可以不指定变量的类型,变量的类型可以让编译器来自动决定类型。

    1.函数内变量的定义

    go语言中定义语法的格式是,
    var修饰,变量的名称在类型的前面,和java不同。

    package main
    
    import "fmt"
    
    // go语言中 声明方法 使用 func
    func main() {
    
    	// 在 go语言中  声明 变量用 var
    	// 名字在前面 类型在后面
    	// 在 go语言中 如果声明了变量 没有给赋值的话 默认的值 就是 空串和0
    	// 比如在 java中 如果不给值 那么就是 null go语言中 都是有默认值的
    	// go语言中 如果定义了变量 不使用的话 会报错
    	var name1 string
    	var age1 int
    	fmt.Println("当前人的名称是", name1, "当前人的年龄是", age1)
    
    	// 定义变量 并且给变量 赋值
    	var name string
    	var age int
    	name = "zhangsan"
    	age = 18
    	//重新赋值
    	age = 19
    	// 直接声明变量 然后给 变量赋值
    	var sex = 1
    
    	fmt.Println("当前人的名字叫 ", name, "他的年龄是", age, "性别是", sex)
    
    	// 第二种定义变量的格式
    	var name2, age2, sex2, flage2 = "zhangsan", 18, 1, true
    	//对变量 重新赋值
    	name2 = "李四"
    	fmt.Println("第二种定义变量的名称是:", name2, "年龄是:", age2, "性别是:", sex2, "状态是:", flage2)
    
    	// 第三种定义变量的格式
    	name3 := "wangwu"
    	age3 := 20
    
    	//对变量重新赋值
    	name3 = "赵六"
    
    	fmt.Println("第三种定义变量的名称是:", name3, "年龄是:", age3)
    
    	//连续对变量进行定义
    	name4, age4, sex4 := "李七", 21, 1
    
    	fmt.Println("第四种定义变量的名称是:"+name4, age4, sex4)
    
    	// ---------------------------------------
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    2.全局变量的定义

    package main
    
    import "fmt"
    
    // 定义全局变量 任何一个函数里面都能使用
    // 第一种写法
    var name5 = "libai"
    var age5 = 100
    
    // 第二种写法
    var (
    	name6 = "chengyaojin"
    	age6  = 100
    )
    
    // go语言中 声明方法 使用 func
    func main() {
    	fmt.Println(name5, age5)
    
    	fmt.Println(name6, age6)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    四、定义常量

    常量一旦被定义,不能被修改。

    package main
    
    import "fmt"
    
    func main() {
    
    	/**
    		1.常量类型只能定义 bool、数值类型(整数,浮点数,复数)、字符串
    		2.变量定义了不使用会报错,常量定义了可以不使用不报错
    		3.常量,定义的时候就指定值,不能修改
    	*/
    	// 显式定义常量值: 确定常量的类型
    	const success1 int = 200
    	// 隐式定义常量
    	const success2 = 200
    
    	// 常量定义 第一种方式
    	const (
    		ERROR1 = 1
    		ERROR2 = 2
    		ERROR3 = 3
    	)
    	// 第二种方式
    	const ERROR4 = 4
    	const ERROR5 = 5
    
    	// 第三种方式
    	// 如果定义常量时 没有给常量定义值 那么这个常量的值 将会使用 上个常量的值
    	const (
    		ERROR6 = 6
    		ERROR61
    		ERROR7 = 7
    		ERROR71
    	)
    
    
    	const (
    		code1 = "success"
    		code2 = true
    		code3 = 1
    	)
    
    	fmt.Println(ERROR1, ERROR2, ERROR3)
    
    	//常量 只能被初始化一次 再次初始化的话 编译报错
    	//ERROR4 = 10
    
    	fmt.Println(ERROR4, ERROR5)
    
    	fmt.Println(ERROR6, ERROR61, ERROR7, ERROR71)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    4.1常量 iota 的使用

    假如我们针对用户表中,用户状态,需要用一个枚举类来表示他的状态,那么就go语言中,如何定义枚举呢?

    package main
    
    import "fmt"
    
    func main() {
    
    	/**
    	1.iota是一个自增的数字类型
    	2.如果中断了iota 那么必须 显式的恢复,后续会继续递增
    	3.每次出现const的时候,iota的初始化都是 0
    
    	*/
    	// 在go语言中对状态进行枚举表示
    	// 未使用:0
    	// 正常: 1
    	// 已封禁:2
    	// 账号异常:3
    	// 停用:4
    	const (
    		NOTUSE = iota
    		NORMAL
    		PROHIBITED
    		ABNORMAL
    		DEACTIVATE
    	)
    
    	const (
    		state = iota
    		state1
    		state2 = "未使用"
    		state3
    		state4 = iota
    	)
    
    	// 假如我们的错误码 从 1000开始
    	const (
    		ERROR = 1000 + iota
    		ERROR1
    		ERROR2
    		ERROR3
    		ERROR4
    	)
    
    	fmt.Println(NOTUSE, NORMAL, PROHIBITED, ABNORMAL, DEACTIVATE)
    
    	fmt.Println(state, state1, state2, state3, state4)
    
    	fmt.Println(ERROR, ERROR1, ERROR2, ERROR3, ERROR4)
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    五、匿名变量

    上面我们说过了,在go中如果变量不被使用的话,那么编译会报错。但是确实有些场景我们用不到这个变量。这个怎么处理?
    使用匿名变量来解决。

    package main
    
    import "fmt"
    
    // 定义一个函数 返回两个返回值 
    // 当前函数 返回两个返回值 类型是 int 和 bool
    func anonymous() (int, bool) {
    	return 0, true
    }
    
    func main() {
    
    	//定义匿名变量 用 "_" 来表示 匿名变量
    	var _ int
    	//将第一个返回值用 匿名变量来接口
    	_, ok := anonymous()
    	if ok {
    		fmt.Println("方法返回的是true")
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    六、数据类型的转换

    package main
    
    import (
    	"fmt"
    	strconv "strconv"
    )
    
    /*
    *
    
    	基本数据类型的转换
    		1.数值之间相互转换
    		1.int、float、bool 转string
    		2.string 转 int、float、bool
    */
    func main() {
    
    	var age int8 = 12
    	//将age转成 uint8
    	var age1 = uint8(age)
    	//将age转成 int64
    	age2 := int64(age)
    	fmt.Println(age1)
    	fmt.Println(age2)
    
    	// -------------------------------- int转成 float
    	var number = float64(age)
    	fmt.Println(number)
    
    	//----------------------------------- int float 转字符串
    	// Itoa 函数必须转成 int类型
    	var number1string string
    	number1 := int(age)
    	number1string = strconv.Itoa(number1)
    	fmt.Println("这是字符串类型:" + number1string)
    
    	var numberFloatString string
    	var numberFloat float64
    	numberFloat = 266.141569
    	//转成string
    	//第1个参数是 要转换的类型
    	//第2个参数是 要转换类型显示成什么样 具体format格式 可以点进去源码看
    	//第3个参数 就写成 -1 就好了
    	//第4个参数 就写成 64就好了
    	numberFloatString = strconv.FormatFloat(numberFloat, 'f', -1, 64)
    	fmt.Println("float64转成string" + numberFloatString)
    	//----------------------------------- bool 转字符串
    	var flage = true
    	var flageString string
    	flageString = strconv.FormatBool(flage)
    	fmt.Println("将bool类型转成string类型:" + flageString)
    
    	//-------------------------------------------------------- 字符串转int float bool
    	// 1.string 转 int
    	var number11string = "100"
    	var number11 int
    	number11, err := strconv.Atoi(number11string)
    	if err != nil {
    		return
    	}
    	fmt.Println("string转成int类型", number11)
    
    	// 2.string 转 float
    	var floatstring = "3.14156"
    	var float1 float64
    	//第2个参数 就写成64
    	float1, err = strconv.ParseFloat(floatstring, 64)
    	if err != nil {
    		return
    	}
    	fmt.Println("string类型转成float类型", float1)
    
    	//将string转成bool
    	var bolstring = "false"
    	var bool1 bool
    	bool1, err = strconv.ParseBool(bolstring)
    	if err != nil {
    		return
    	}
    	fmt.Println("string类型转成bool类型", bool1)
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
  • 相关阅读:
    000-视频与网络应用篇-目录
    【云原生之kubernetes实战】在k8s环境下部署jpress开源网站
    [附源码]java毕业设计 图书管理系统
    【线性代数基础进阶】二次型
    【算法与数据结构】491、LeetCode递增子序列
    已有wchar_t *类型的filepath,使用Qt打开该文件
    Hadoop入门(五):集群配置
    Python从入门到实践(一)Python3安装和Hello World
    5.MidBook项目经验之MongoDB,Nacos,网关
    月入10.3K,苦逼土木狗转行5G网路优化工程师:对象没了之后,我选择转行!
  • 原文地址:https://blog.csdn.net/qq_44605317/article/details/132628743