news 2026/8/26 20:32:24

Golang 学习笔记--Golang介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Golang 学习笔记--Golang介绍

Golang 笔记

标志:金花鼠gordon

Golang 笔记目录

  • Golang 笔记
    • Google为什么要创作Go语言
    • golang执行流程分析
    • golang开发注意事项
    • golang转义字符
    • golang中常见的问题以及解决方法
    • golang中的注释
    • golang的规范以及代码风格
    • golang官方编程指南
    • golang变量
    • golang变量数据类型
    • golang整数基本数据类型介绍
    • golang整型使用细节
    • golang浮点类型
    • golang整型使用细节
    • golang字符类型
    • golang字符使用细节
    • golang布尔类型 bool
    • golang字符串类型 string
    • golang基本数据类型默认值(零值)
    • golang基本数据类型转换
    • golang指针
    • golang值类型和引用类型
    • golang标识符的命名规范
    • golang预定义标识符(36个)

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)使用变量

packagemainimport"fmt"funcmain(){//声明变量variint//变量赋值i=10//使用变量fmt.Printf("%d",i)}

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

packagemainimport"fmt"funcmain(){//声明变量后不赋值使用默认值variint//根据值自行判断变量类型(类型推导)varf=10.01//省略var使用:=推导str:="string"//多变量声明vara,b,c,d,eint}

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)查看数据所占字节大小

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

golang浮点类型

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

varf_32float32=89.124varf_64float64=888889.12456

golang整型使用细节

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

//数据类型查看//输出为flost64varf=10.1fmt.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:就是需要转换的变量

variint32=100varn1float32=float32(i)varn2int64n2=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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 20:31:43

界面组件DevExpress WPF TreeView中文指南 - 如何实现数据分层展示

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 DevExpress新旧版本帮…

作者头像 李华
网站建设 2026/8/26 20:31:14

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具…

作者头像 李华
网站建设 2026/8/26 20:20:53

Anthropic多智能体:能力越强,协作越容易失控?

来源|Anthropic Frontier Red Team 研究报告《Patterns and problems in emerging multiagent systems》未来,大量AI智能体会在代码仓库、交易市场、各类业务系统里互相打交道。AI与AI之间的交互规模,很可能会超过人机交互、人与人交互的总量…

作者头像 李华
网站建设 2026/8/26 20:12:43

Uglifier选项完全速查表:60+压缩配置参数一文看懂

Uglifier选项完全速查表:60压缩配置参数一文看懂 【免费下载链接】uglifier Ruby wrapper for UglifyJS JavaScript compressor. 项目地址: https://gitcode.com/gh_mirrors/ug/uglifier Uglifier 是一个用于 Ruby 的 JavaScript 压缩器封装 gem,…

作者头像 李华