Go Tip01 Go语言简介、Go实例、规则、变量、数据类型、基本类型和string类型的相互转换

文章目录

      • 一、Go语言简介
      • 二、第一个Go程序
      • 三、Go程序开发的注意事项
      • 四、Go语言的变量
      • 五、数据类型
      • 六、Golang基本数据类型的转换

一、Go语言简介

Go语言既可以到达静态编译语言的安全和性能,又可以高效开发。
1、从C语言继承了很多理念,包括表达式的语法、控制结构、基础数据类型、参数传值、指针等。
2、引入了包的概念,GO的一个文件都要归属一个包
3、垃圾回收机制,内存自动回收
4、天然并发(利用goruntine,实现大并发处理,高效利用多核)
5、吸收了管道通信机制,go特有的管道channel
6、函数可以返回多个值
7、新的创新,例如切片slice、延时执行defer等
Golang官网:https://go.dev
Golang中文API网站:https://studygolang.com/

二、第一个Go程序

编译
go build hello.go
运行
hello.exe
直接执行
go run hello.go

package main

//
import "fmt"

func main() {
	fmt.Println("hello world")
}

三、Go程序开发的注意事项

注意事项
1、GO源文件以go结尾
2、Go应用程序的执行入口是main方法
3、Go语言严格区分大小写
4、Go方法由一条条语句构成,每个语句后不需要分号(Go语言会在每行后自动加分号),这也体现了Golang的简洁性
5、Go编译器是一行一行进行编译的,因此一行接卸一个语句,不可以多条语句写在同一行
6、Go语言定义的变量或者import的包,如果没有找到,代码不能编译通过
7、大括号都是成对出现的,缺一不可

四、Go语言的变量

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	printi()
	fmt.Println("hello world")
}

//申请全局变量
var q1 = 1
var q2 = 1
var q3 = 1

var (
	q11 = 1
	q22 = 1
	q33 = 1
)

func printi() {
	//第一种定义变量 指定变量类型,声明后不赋值则用默认值
	var name int = 1
	//第二种自行判断 根据值自行判断变量类型
	var num = 10.11
	fmt.Println(unsafe.Sizeof(name))
	//第三种 省略var 省略var,:=左侧的变量不应该是已经声明过的变量
	age := 18
	//使用变量
	fmt.Println(name, num, age)
	//多个变量申请
	var n1, n2, n3 int
	fmt.Println(n1, n2, n3)
	//多个变量申请
	var n11, n22, n33 = 1, 2, 3
	fmt.Println(n11, n22, n33)

	n111, n222, n333 := 1, 2, 3
	fmt.Println(n111, n222, n333)

}






变量使用注意事项
1、变量表示内存的一个存储区域
2、该区域有自己的名称(变量名)和类型(数据类型)
3、Golang变量使用的三种方式
第一种,指定变量类型,声明后不赋值则用默认值
第二种,根据值自行判断变量类型
第三种,省略var,:=左侧的变量不应该是已经声明过的变量
4、多变量声明,一次性声明多个变量
5、该区域的数据值可以在同一类型范围内不断变化
6、变量在同一个作用域内不可以重名
7、变量=变量名+值+数据类型
8、Golang的变量如果没有赋初值,编译器会默认使用初值

在Go中函数以外的变量就是全局变量

五、数据类型

基本数据类型
	数值型
		整数类型(intint8int16int32int64uintuint8uint16uint32uint64byte) 默认值0
			uint无符号 int有符号
		浮点类型(float32float64) 默认值0
			浮点数存放形式为符号位+指数位+尾数位
			尾数部分可能丢失,造成精度损失
	字符型(byte存单个字母字符)
		如果我们保存的字符在ASCII表,则保存到byte
		如果保存的字符的对应值大于255,可以考虑使用int类型保存
		如果需要按照字符的方式输出,需要格式化输出%c
	布尔型(bool) 默认值false
	字符串(string) 使用的UTF-8编码 默认值""
		字符串赋值了不可修改
		双引号和反引号两种表示形式
		反引号(``)将字符串的原生形式输出,不会进行转义
		用加号实现字符串的拼接
派生/复杂数据类型
	指针(pointer)
	数组
	结构体(struct)
	管道(Channel)
	函数(也是一种类型)
	切片(slice)
	接口(interface)
	map

1、Golang整数类型分为有符号和无符号两种 大小与系统有关
2、Golang的类型默认为int类型
3、在程序中查看某个变量字节大小和数据大小
fmt.Println(unsafe.Sizeof(name))
4、Golang程序中整型变量在使用时采用保小不保大的原则,保证程序运行的情况下,尽量使用空间较少的数据类型
5、bit是计算机中最小的存储单位,byte是基础存储单元

六、Golang基本数据类型的转换

Go在不同类型的变量之间赋值需要进行显示转换,不能自动转换
基本语法T(v) T是数据类型 v是要转换的数据 意思是将v转换为T类型

func transformdata() {
	var i int32 = 100
	var name = float32(i)
	fmt.Print(name)

}

1、Go数据类型转换,可以从低精度转到高精度
2、被转换的是变量存储的数据,变量本身的数据类型没有发生变化
3、在转换中int64转int8不会报错但是会溢出,和我们预期的结果不一样

格式:
	通用
	%v	值的默认格式表示
	%+v	类似%v但输出结构体会添加字段名
	%#v	值的Go语法表示
	%T	值的类型的Go语法表示
	%%	百分号
	
	布尔
	%t 单词truefalse
	
	整数
	%b	二进制
	%c	对应的unicode码值
	%d	十进制
	%o	八进制
	%q	对应单引号括起来的go语法字符值,必要时会采用安全的转义符表示
	%x	十六进制	小写abc
	%X	十六进制 大写ABC
	%U	unicode格式
	
	浮点数与复数
	%b	无小数部分、二进制指数的表示
	%e	科学计数法 小写e
	%E	科学计数法 大写E
	%f	有小数部分但是无指数部分
	%F	等价于%f
	%g 根据实际情况采用%e或%f
	%G 根据实际情况采用%E或%F
	
	字符串
	%s	直接输出字符串或字节数组

基本数据类型和string类型的转换

func transformString() {
	var age int = 10
	/*方法一
	参数需要和表达式的类型匹配
	函数会返回转换后的字符串*/
	var string1 = fmt.Sprintf("%d", age)
	fmt.Println(string1)
	//	方法二 strconv函数 10代表小数保留的位数
	var num1 int = 99
	var str = strconv.FormatInt(int64(num1), 10)
	fmt.Println(str)
	// 方法三 Itoa函数将int转成string
	var num2 int=123
	str =strconv.Itoa(num2)
	fmt.Println(str)

}

string数据类型 转基本数据类型
如果转换失败,则返回默认值

使用strconv包的函数进行转换
ParseBool(value bool,error)
ParseFloat()
ParseInt()
ParseUint()

func datatoString() {
	var str string = "true"
	var b bool
	//1、strconv.ParseBool(str) 函数会返回两个值
	//2、只想获取到value bool 不想获取err 所以用_忽略
	b, _ = strconv.ParseBool(str)
	fmt.Printf("%T %v", b, b)

	var str1 string = "123"
	var num1 int64
	//第一个参数是字符串 第二个参数是十进制 第三个参数是位数
	num1, _ = strconv.ParseInt(str1, 10, 64)
	fmt.Printf("%d,%T", num1, num1)

	var str2 string = "123.123"
	var num2 float64
	//第一个参数是字符串 第二个参数是十进制 第三个参数是位数
	num2, _ = strconv.ParseFloat(str2, 64)
	fmt.Printf("%d,%T", num2, num2)
}

你可能感兴趣的:(Go,golang,java,开发语言)