GO基础语法【GO学习之路】

1,035 阅读4分钟

1e30e924b899a90188b91e3375a38b7d0308f5e0.png

前言

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

本文大纲

GO基础语法.png

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)   
}

运行结果:
面积为 : 50
1 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,16
string,`abc`

常量的注意事项:

  • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
  • 不曾使用的常量,在编译的时候,是不会报错的
  • 显示指定类型的时,必须确保常量左右值类型一致,需要时可做显示类型转换

3、数据类型与运算符

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

002shujuleixng.jpg

  • 布尔型bool,它的值:true or false
  • 数值型:包括整型、浮点型、复数

整型中有符号类型:

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

整型中无符号类型:

uint	32位系统占4字节(与uint32范围一样),64位系统占8字节(与uint64范围一样)     
uint8   占据1字节   范围 0 ~ 255
uint16  占据2字节   范围 0 ~ 216次方)-1
uint32  占据4字节   范围 0 ~ 232次方)-1
uint64  占据8字节   范围 0 ~ 264次方)-1
byte	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 complex128
t = 2.1 + 3.14i
t1 = complex(2.1,3.14) // 结果同上	
fmt.Println(real(t))   // 实部:2.1
fmt.Println(imag(t))   // 虚部:3.14

Go语言中的运算符及优先级关系如下图 Snipaste_2022-07-29_08-42-54.png

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 int
for ; ; i++ {
   if(i > 10){
      break;
   }
}

// 类似while循环
for condition {}

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

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