GoLang学习笔记(一)

GoLang学习笔记(一)

Go特性

静态编译行

Go的安装

编译器;

Go语言的基本命令

命令的使用方式为:go commond [args]

常用命令:

help:帮助

Build:编译包和依赖(提交阶段,打包)

run:编译并运行go程序(开发阶段,调试)

get:下载并安装第三方包和依赖

test:测试运行

编码

go语言的

Helloworld.go

package main //main包表示当前是一个可执行程序,不是一个库

import "fmt"	// format格式化

func main() {
	fmt.Println("Hello, World!")	 //	分号可有可无,go会自己添加
}

Git

  • 用于版本控制的一个免费的软件
  • 分布式和集中式的最大区别在于本地是否有一个完整的git仓库
  • GitHub是一个面向开源,是简历的重要内容

token标记

编译器词法分析把源代码分割为若干个token

go的关键词

包的的导入和声明:import package

实体声明:chan const …

流量控制:break case continue

标识符

预声明的标识符(40个)

内置数据类型(20)内置函数名(15)内置常量(4)

字面量

表示一个固定值

变量

变量存储和生存期:

c语言创建一个变量,这个变量到底是在堆还是栈里面。

栈属于进程本身所占用的空间,堆是所有程序共同使用的空间。

堆:是操作系统分配的空间,对空间的使用原则:有借有还,再借不难。例如new等操作产生的变量,需要free或者delete操作。

栈:加载一个函数会为函数分配一个栈,这个栈可以压栈,就是递归;局部变量存放在栈内,在函数内部使用时临时分配,使用周期结束后自动弹出栈,回收,所以局部变量的值不可以在函数外使用。

变量声明:
  • 在go里面,变量声明了但未使用,会出现报错。
变量赋值:
  • Go是强类型语言,编译器会确认每个变量应有的类型。
  • Go是静态语言

常量

  • 常量不可变,同时声明和赋值
  • 常量存储在只读段区
  • 语句格式:
    • const:表示声明的常量
    • identifier
    • dataType

表达式和语句

  • 表达式:表示一个值,可以在任何需要值的地方

  • 语句:表示一种行为

  • 注释:对代码进行解释,还能生成文档

    • 单行: //
    • 多行:/**/
  • 语句类型:

    • 声明赋值语句
    • 条件语句
    • 循环语句
    • 转移语句
条件语句if

Go不支持三目运算符

if i=10;i>8{

}
条件语句switch
switch score := 78.0;math.Floor(score/10){
  case 10:
	case 9:
  fmt.Println("优秀")
  case 5,4,3,2,1,0:
  fmt.Println("不及格")
}
  • case后面的break可以省略,就不会跳出switch,一直执行下去
  • 多个case连在一起,一般为了同时满足多个条件
无条件的switch

就相当于若干个if else

t:= time.Now()
switch{
	case t.Hour()<12:
  fmt.Println("")
  case t.Hour()<7:
  fmt.Println("")
  default:
}
循环语句for
//	格式
for i:=1; i<=10;i++{
  fmt.Println(i)
}
//	for不需要加括号,并且分号不能少
转移语句break
for i:=0 ;i<5; i++{
  if i==3 {
    continue
  }
  fmt.Println(n)
}
转移语句-标签

为了处理多重循环跳出的嵌套问题和可读性问题

flag := false

end :
for i:=1;i<100;i++{
  for j:=q;j<100;j++{
    if i*j ==651{
      flag = true
      goto end	//一次性跳出
    }
  }
}

数据类型

基础数据类型
整形
  • 根据位数:

    • 有符号int:int,int8 ,int16等等
    • 无符号int :uint,uint8等等
  • 这些int都是不同类型,int代表多少位的int不一定,多少位取决于编译输出平台,uint同理。

  • 不同整形直接不能直接比较,不能直接运算
浮点型
  • float32(1e38)和float64(1e308)
  • 标准库math和默认推断都是64位
  • 字面量表示:
math基本函数函数包
复数
  • 有两个浮点数组成,一个实部,一个虚部
  • complex32
布尔类型
  • 类型长度为一个字节,true,false
  • 不可以用0和1进行赋值
字符类型
  • 两种

    • byte:对应unint8,代表ascll一个字符
    • rune:对应int32,代表unicode一个字符
  • 字符常量用单引号

  • 使用转义字符

  • fmt.Printf("%c",54325)
    //	可以用数字输出字符	
    
字符串类型
  • 字符串类型string,采用UTF-8编码格式的不可改变的字符序列,长度不变该内容也是不允许的!!!因为变量空间在声明赋值的时候就分配好了,不允许再修改。
  • 采用双引号,多行可用反引号`,空格和缩进都会保留
strings包
  • 是否存在某个字符和字串
    • Func Contains()
  • 一些strings的用法,自己去看文档
strconv包
  • 字符串转为整型
  • 整形转为字符串
  • 字符串和布尔值之间的转换
  • 字符串和浮点数之间的转换
unicode包
  • 三个部分:
    • unicode:基本的字符判断函数
    • Utf8:负责rune和byte之间的转换
    • Utf16:负责rune和uint16数组之间的转换
指针
  • 指针指向存放数据的地址,指针可以指向操作两个实体

    • 指针值:数据地址
    • 间接访问值:数据本身
  • Go支持指针的指针

  • 只声明未赋值的零值为nil

    a:=5
    var b*int 
    fmt.Printf(b ==nil)
    b = &a
    *b = 6
    
    //	指针的指针访问
    **c = 7
    
  • Go不允许指针自增运算

运算符
  • 算术运算符
    • 自增:只能变量++,++变量不支持
    • 自减运算也一样
  • 关系运算符
  • 逻辑运算符: ! && ||
  • 赋值运算符: 同c语言
  • 位运算:
    • 只对整形起作用,之间处理一个比特位,底层运算,效率更高
    • 左移操作:*2,右移:/2
    • 位操作:
      • 位与操作&
      • 位或操作|
      • 异或运算^:两个数字进行三次异或会交换其值
GoLang学习笔记主要包括以下几个方面: 1. 语法规则:Go语言要求按照语法规则编写代码,例如变量声明、函数定义、控制结构等。如果程序中违反了语法规则,编译器会报错。 2. 注释:Go语言中的注释有两种形式,分别是行注释和块注释。行注释使用`//`开头,块注释使用`/*`开头,`*/`结尾。注释可以提高代码的可读性。 3. 规范代码的使用:包括正确的缩进和空白、注释风格、运算符两边加空格等。同时,Go语言的代码风格推荐使用行注释进行注释整个方法和语句。 4. 常用数据结构:如数组、切片、字符串、映射(map)等。可以使用for range遍历这些数据结构。 5. 循环结构:Go语言支持常见的循环结构,如for循环、while循环等。 6. 函数:Go语言中的函数使用`func`关键字定义,可以有参数和返回值。函数可以提高代码的重用性。 7. 指针:Go语言中的指针是一种特殊的变量,它存储的是另一个变量的内存地址。指针可以实现动态内存分配和引用类型。 8. 并发编程:Go语言提供了goroutine和channel两个并发编程的基本单位,可以方便地实现多线程和高并发程序。 9. 标准库:Go语言提供了丰富的标准库,涵盖了网络编程、文件操作、加密解密等多个领域,可以帮助开发者快速实现各种功能。 10. 错误处理:Go语言中的错误处理使用`defer`和`panic`两个关键字实现,可以有效地处理程序运行过程中出现的错误。 通过以上内容的学习,可以掌握Go语言的基本语法和编程思想,为进一步学习和应用Go语言打下坚实的基础。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Golang学习笔记](https://blog.csdn.net/weixin_52310067/article/details/129467041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [golang学习笔记](https://blog.csdn.net/qq_44336275/article/details/111143767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值