写点什么

GO 学习之路 -3.GO 基础语法

作者:子不语Any
  • 2022-11-30
    湖南
  • 本文字数:1777 字

    阅读完需:约 6 分钟

GO学习之路-3.GO基础语法

前言

万丈高楼离不开稳固的地基。学习编程技术也是一样,基础不牢固谈不上后续进阶提升。本文开始学习 GO 语言的基本语法点...

本文大纲


1、变量声明与使用

GO 语言使用var来声明变量


变量名:以字母或下划线开头,由一个或多个字母、数字、下划线组成


三种声明方式:


  • 第一种,指定变量类型,声明后若不赋值,则使用默认值


var name type = value例如:var a int = 10
复制代码


  • 第二种,根据值自行判定变量类型(类型推断 Type inference)


var name = value例如:var a int = 10
复制代码


  • 第三种,省略 var, 注意 :=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明)


name := value例如:c : = 10
复制代码

2、常量 constant

GO 语言声明常量


const identifier [type] = value显式类型定义: const b string = "abc"隐式类型定义: const b = "abc"
复制代码


演示示例:


package main
import "fmt"
func main() { const LENGTH int = 10 const WIDTH int = 5 var area int const a, b, c = 1, false, "str" //多重赋值
area = LENGTH * WIDTH fmt.Printf("面积为 : %d", area) println() println(a, b, c) }
运行结果:面积为 : 501 false str
复制代码


常量可以作为枚举,常量组


const (    Unknown = 0    Female = 1    Male = 2)
复制代码


演示示例:


package main
import ("fmt")
func main() { const ( x uint16 = 16 y s = "abc" z ) fmt.Printf("%T,%v\n", y, y) fmt.Printf("%T,%v\n", z, z)}
运行结果:
uint16,16string,`abc`
复制代码


常量的注意事项:


  • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

  • 不曾使用的常量,在编译的时候,是不会报错的

  • 显示指定类型的时,必须确保常量左右值类型一致,需要时可做显示类型转换

3、数据类型与运算符

GO 中可用的数据类型总览如下图



  • 布尔型 bool,它的值:true or false

  • 数值型:包括整型、浮点型、复数


整型中有符号类型:


int     32位系统占4字节(与int32范围一样),64位系统占8个节(与int64范围一样)     int8    占据1字节   范围 -128 ~ 127int16   占据2字节   范围 -2(15次方) ~ 2(15次方)-1int32   占据4字节   范围 -2(31次方) ~ 2(31次方)-1int64   占据8字节   范围 -2(63次方) ~ 2(63次方)-1rune  int32的别称
复制代码


整型中无符号类型:


uint  32位系统占4字节(与uint32范围一样),64位系统占8字节(与uint64范围一样)     uint8   占据1字节   范围 0 ~ 255uint16  占据2字节   范围 0 ~ 2(16次方)-1uint32  占据4字节   范围 0 ~ 2(32次方)-1uint64  占据8字节   范围 0 ~ 2(64次方)-1byte  uint8的别称
复制代码


浮点类型


float32 单精度  占据4字节   范围 -3.403E38 ~ 3.403E38    (math.MaxFloat32)float64 双精度  占据8字节   范围 -1.798E208 ~ 1.798E308  (math.MaxFloat64)
复制代码


复数


Go 中复数默认类型是 complex128(64 位实数+64 位虚数)。如果需要小一些的,也有 complex64(32 位实数+32 位虚数)。


复数的形式为RE + IMi,其中 RE 是实数部分,IM 是虚数部分,而最后的 i 是虚数单位。


如下所示:


var t complex128t = 2.1 + 3.14it1 = complex(2.1,3.14) // 结果同上  fmt.Println(real(t))   // 实部:2.1fmt.Println(imag(t))   // 虚部:3.14
复制代码


Go 语言中的运算符及优先级关系如下图


4、条件语句与循环语句

选择结构:条件满足,某些代码才会执行。0-1 次

分支语句:if,switch,select

循环结构:条件满足,某些代码会被反复的执行多次。0-N 次

循环语句:for 是唯一的循环语句。(Go 没有 while 循环)


判断语句 if


if 布尔表达式1 {   /* 在布尔表达式1为 true 时执行 */} else if 布尔表达式2{   /* 在布尔表达式1为 false ,布尔表达式2为true时执行 */} else{   /* 在上面两个布尔表达式都为false时,执行*/}
复制代码


分支语句 switch


switch num {   case 1:                  // case 语句可以是表达式      fmt.Println("111")   case 2:      fmt.Println("222")   default:      fmt.Println("000")}
复制代码


循环语句 for


// 传统的for循环for init;condition;post{}
// for循环简化var i intfor ; ; i++ { if(i > 10){ break; }}
// 类似while循环for condition {}
复制代码


掘金(juejin.cn)  一起分享知识,Keep Learning!


本文正在参加技术专题18期-聊聊Go语言框架

发布于: 刚刚阅读数: 3
用户头像

子不语Any

关注

If not now,when? 2022-09-17 加入

安卓攻城狮

评论

发布
暂无评论
GO学习之路-3.GO基础语法_Go_子不语Any_InfoQ写作社区