0
点赞
收藏
分享

微信扫一扫

Golang 学习笔记--Golang介绍

芝婵 2022-05-03 阅读 136

Golang 笔记

标志:金花鼠gordon
标志:金花鼠gordon

Golang 笔记目录


Google为什么要创作Go语言

1)计算机硬件技术跟新频繁
2)软件系统复杂度高、维护成本高
1、风格不统一
2、计算能力不够
3、不能处理大并发
3)兼顾开发速度以及开发速度


golang执行流程分析

1)先对源码进行编译,在执行(go build)
XXX.go --> XXX.exe -->执行
2)源码直接运行(go run)
XXX.go --> 执行


golang开发注意事项

1)源码文件以".go"为扩展名
2)golang程序入口是main()
3)golang是严格区分大小写
4)Go方法是由一条一条语句实现的,每个语句在结束后不需要加分号
5)Go编译器是一行一行编译的,不能将多条语句写在一行
6)Go语言定义的编译或者import的包如果没有使用到编译不能通过
7)大括号都是成对出现的


golang转义字符

1)\t 制表符
2)\n 换行
3)\\ 斜杠
4)" 一个"
5)\r 回车


golang中常见的问题以及解决方法

1)找不到文件
–源文件名不存在或者写错,或者当前路径错误
2)语法错误
–尝试去看懂编译器报错信息

golang中的注释

目的:提高代码可维护性
行注释://
块注释:/**/


golang的规范以及代码风格

1)推荐使用行注释来注释整个方法和语句
2)有正确的缩进和空白
3)运算符的两边各加一个空格


golang官方编程指南

Golang官方网站:https://golang.org/#


golang变量

变量是程序的基本组成单位
变量相当于内存中一个数据存储空间
1)声明变量
2)变量赋值
3)使用变量

package main

import "fmt"

func main() {
	//声明变量
    var i int
    //变量赋值
    i = 10
    //使用变量
    fmt.Printf("%d",i)
}

注意事项:
1)声明变量后不赋值使用默认值
2)根据值自行判断变量类型(类型推导)
3)省略var使用:=推导
4)多变量声明

package main

import "fmt"

func main() {
	//声明变量后不赋值使用默认值
    var i int
    //根据值自行判断变量类型(类型推导)
    var f = 10.01
    //省略var使用:=推导 
    str := "string"
    //多变量声明
    var a,b,c,d,e int
}

golang变量数据类型

golang变量数据类型


golang整数基本数据类型介绍

有符号

类型所占空间取值范围
int81字节-2^7 ~ 2^7-1
int162字节-2^15 ~ 2^15-1
int324字节-2^31 ~ 2^31-1
int648字节-2^63 ~ 2^63-1

无符号

类型所占空间取值范围
uint81字节0 ~ 2^8-1
uint162字节0 ~ 2^16-1
uint324字节0 ~ 2^32-1
uint648字节0 ~ 2^64-1

golang整型使用细节

1)golang整数分类 有符号/无符号(int/uint)
在32位的机器上面大小为4字节
在64位的机器上面大小位8字节
2)整型默认声明为int型
3)查看数据所占字节大小

    //数据类型查看
    //输出为int
    var i = 100
    fmt.Printf("%T",i)
    //查看数据所占字节大小
    //64位机器输出8 32位机器输出4
    fmt.Printf("%T",unsafe.Sizeof(i))

golang浮点类型

浮点类型就是用于存放小数的

    var f_32 float32 = 89.124
    var f_64 float64 = 888889.12456

golang整型使用细节

1)golang浮点类型有固定的长度,不受操作系统影响
2)golang的浮点类型默认是float64

    //数据类型查看
    //输出为flost64
    var f = 10.1
    fmt.Printf("%T",f)

golang字符类型

1)Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。
2)字符数组就是一串固定长度的字符连接起来的字符序列。对于传统的字符串是由字符组成的,而Go的字符串不同,它是由单个字节连接起来的。
3)如果我们保存的字符在ASCII表的,比如[0-1,a-z,A-Z…]直接可以保存到byte
4)如果我们保存的字符对应码值大于255如汉字,这时我们可以考虑使用int类型保存
5)如果我们需要按照字符的方式输出,这时我们需要格式化输出,即fmt.Printf(“%c”,c1)


golang字符使用细节

1)字符常量是用单引号(‘’)括起来的单个字符。
例如:var c1 byte = ‘a’ var c2 int = ‘中’ var c3 byte = ‘9’
2)Go中允许使用转义字符’\’来将其后的字符转变为特殊字符型常量。
例如:var c3 char = ‘\n’//'\n’表示换行符
3)Go语言的字符使用UTF-8编码,英文字母-1个字节,汉字-3个字节。
4)在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值。
5)可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符。
6)字符类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。
7)字符型存储到计算机中,需要将字符对应的码值(整数)找出来:
存储:字符—>对应码值---->二进制–>存储
读取:二进制---->码值---->字符–>读取
8)字符和码值的对应关系是通过字符编码表决定的。
9)Go语言的编码都统一成了utf-8。非常的方便,很统一,再也没有编码乱码的困扰了。


golang布尔类型 bool

1)布尔类型也叫bool类型,bool类型数据只允许取值true和false。不可以0或非0的整数替代false和true,这点和C语言不同。
2)bool类型占1个字节。
3)bool类型适于逻辑运算,一般用于程序流程控制。


golang字符串类型 string

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。

1)Go语言的字符串的字节使用UTF-8编码标识Unicode文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再产生困扰。
2)字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。
var str = “hello” str[0] = “a”//会报错
3)字符串的两种表示形式:
1)双引号,会识别转义字符,如str := "abc\nabc"输出的时候会换行。
2)反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果:

str := `
    abc
    def
    ghi\nk
    `

4)字符串拼接

    str := "hello" + "world"
    str += "haha"

golang基本数据类型默认值(零值)

在go中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在go中,默认值又叫零值。

数据类型默认值
整型0
浮点型0
字符串0
布尔类型false

golang基本数据类型转换

Golang和java/c不同,Go在不同类型的变量之间赋值时需要显式转换,即var n1 float32要等于float32(i)而不能直接等于i。也就是说Golang中数据类型不能自动转换。

T(v):将值v转换为类型T:
T:就是数据类型,比如int32,int64,float32等等。
v:就是需要转换的变量

    var i int32 = 100
    var n1 float32 = float32(i)
    var n2 int64
    n2 = i + 20//会报错
//n2 = int64(i) + 20//正确写法

1)Go中,数据类型的转换可以是从表示范围小–>表示范围大,也可以范围大—>范围小
2)被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
3)在转换中,比如将int64转成int8【-128—127】,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样。因此在转换时,需要考虑范围。


golang指针

1)基本数据类型,变量存储的就是值,也叫值类型
2)获取变量的地址,使用取址符&,
3)指针类型,指针变量存放的是一个地址,这个地址指向的空间才是值
4)获取指针类型所指向的值,使用解引用符号*


golang值类型和引用类型

1)值类型:基本数据类型 int、float、string 、 数组、struct
通常实在栈中分配
2)引用类型:指针、slice切片、管道chan、interface、都是引用类型
变量存储的是一个地址,这个地址对应的空间才是指针存储数据,内存通常在堆空间上分配,当没有任何变量引用这个地址的时候,该地址对应的数据空间成为一个垃圾空间,由gc回收


golang标识符的命名规范

1)golang 对各种变量、方法、函数名命名是使用的字符序列成为标识符
2)凡是自己可以起名字的地方都叫标识符

规则
1)由26个字母大小写,0-9,组成
2)数字不能开头
3)golang中严格区分大小写
4)标识符中不能存在“ ”空格
5)单独一个“
”是go中的特殊标识符,表示空标识符,可以代表任何其他的标识符,但它本身的是会被忽略,左右仅能作为被占位符使用,不能作为标识符使用
6)不能以系统保留关键字作为标识符

Go 共有 25 个保留关键字,各有其作用,不能用作标识符。Go 的 25 个关键字按照作用可以分为 3 类,分别为包管理、程序实体声明与定义与程序流程控制。
包管理(2个):

importpackage

程序实体声明与定义(8个):

chanconstfuncinterfacemapstructtypevar

程序流程控制(15个):

breakcasecontinuedefaultdeferelsefallthroughforgogotoifrangereturnselectswitch

标识符命名注意事项
1)包名:包名尽量与文件名保持一致,尽量采用有意义的包名,简短有意义,不要和标准库冲突
2)变量名、函数名、常量名:采用驼峰法
3)如果变量名、函数名、常量名首字母大写,则可以被其他包访问,如果首字母为小写则只能在本包中只用
(可以理解为:首字母大小为共有,首字母小写为私有)


golang预定义标识符(36个)

基础数据类型和系统内嵌函数

appendboolbytecapclosecomplexcomplex64complex128uint16copyfalsefloat32float64imagintint8int16uint32int32int64iotalenmakenewnilpanicuint64printprintlnrealrecoverstringtrueuintuint8uintptr
举报

相关推荐

0 条评论