ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GoLang学习笔记(一)

2021-09-18 11:58:57  阅读:100  来源: 互联网

标签:语句 学习 变量 fmt 笔记 GoLang go case Go


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
    • 位操作:
      • 位与操作&
      • 位或操作|
      • 异或运算^:两个数字进行三次异或会交换其值

标签:语句,学习,变量,fmt,笔记,GoLang,go,case,Go
来源: https://blog.csdn.net/lannister_awalys_pay/article/details/120364397

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有