首页 > 其他分享 >Go语言基础(一)

Go语言基础(一)

时间:2023-03-05 18:36:24浏览次数:27  
标签:Println 语言 int fmt 基础 var Go 定义

写在前面

狂神开了一个Go的班,作为之前学过狂神Java,且有意向学Go的人,在有钱后第一时间去报了班。最近这段时间,Go语言的热度比起Java要高得多。一是为了给自己未来多一条路子,一是出于自己的兴趣爱好,正式开始学习Go。

定义变量

那么作为已经学习过众多语言的人,一些很基础的诸如配置环境,下载IDE等操作就不再记录了。直接开始学习Go的语法。

首先是变量的定义。Go是强类型语言,采用了与kotlin类似的变量后置,使用var来定义变量,并在变量名后声明类型,如下:

var name string
var age int

当然,我们可以在定义变量的时候直接赋值:

var name string = "wushenjiang"

不同于Java语言,我们可以一次性同时定义多个变量:

var (
	addr  string
	phone int
)

语法糖——:=

那么有人可能会有疑惑,这个var关键字有点多余呀。自然,Go语言提供了语法糖来定义变量:

name := "wushenjiang"

语法糖——交换变量

Go语言会提供很多的语法糖来简化我们的操作,比如一个最经典的交换变量a与b,我们在java语言或者C语言等可能要这样写:

int a,b,temp;
temp = a;
a = b;
b = temp;

很明显,这是非常不符合直觉的。在我初学编程时,为了理解交换变量都用了很长时间。Go语言对此提供了语法糖:

// 变量交换 语法糖
var a int = 100
var b int = 200
fmt.Println("a=", a, "b=", b)

b, a = a, b
fmt.Println("交换后a=", a, "b=", b)

类似的操作在Python语言里也可以这么写。采用这种写法,很明显更符合直觉。

匿名变量

这里提前引入了一个概念,即go的函数是可以返回多个值的,如:

func test() (int, int) {
	return 100, 200
}

那么比如说我们可能不需要其中某一个返回值要咋办呢?我们可以把他扔掉,直接不使用:

// 只想要test返回的第一个结果 使用匿名变量
a, _ = test()

同理,我们只想要第二个也可以这样写:

_,b = test()

定义常量

有了变量,自然也有常量。定义常量可以是显式定义,即自己指定类型:

// 常量 显式定义
const URL string = "wushenjiang.com"

也可以不指定类型,让编译器自动推断:

// 常量 隐式定义
const URL1 = "wushenjiang"

自然,也存在一些特殊的常量,如iota,这个常量是用来进行计数的,如下:

// 在一组const中 会自动+1
const (
	a = iota
	b = iota
	c = iota
	// 如果在定义const的时候 下面的常量没有赋值 默认沿用上面一个常量定义的赋值
	d = 0
	e = iota
)
fmt.Println(a, b, c, d, e)

我们打印结果,可以看到:

image-20230305174849388

咱们的d变量是0,但e还是变成了4,因为他是计数器,每多定义一个常量就会自动+1。这让我想起了数据库中的自增主键。大概后面可能会用到吧。

常见的基本数据类型

编程语言会有很多数据类型,这大家都知道。这里就大概过一下。

bool

布尔类型,只有true与false,如下:

// 定义变量 bool 布尔类型的定义
var b1 bool
var b2 bool

b1 = true
b2 = false

int

对于int类型,go语言提供了int8,int16,int32,int64以及无符号类型的uint系列:

image-20230305175340815

image-20230305175347658

int就不需要介绍了,非常常见。这里要注意的点是,我们默认使用int来定义时,按照源码里的介绍,最少为int32。取决于具体的操作系统:

image-20230305175605265

float

对于float类型,需要指定是float64还是float32:

var f1 float64
f1 = 3.14
var f2 float32
f2 = 5

一般使用float64即可

byte

byte,即字节。在go中他其实就是uint8类型:

image-20230305175849458

string

字符串类型,更常见了。直接使用:

var str string
str = "Hello,World"

if与switch

if

对于if的使用,要注意的是Go语言强行规定了格式,不过我们在使用goland工具书写时会自动帮我们使用要求的格式:

var num int = 15

if num > 10 {
	fmt.Println("num > 10")
}

var score int = 90
if score > 60 {
	fmt.Println("has succeed")
} else if score > 70 {
	fmt.Println("excellent")
}

switch

go语言的switch,新增了一个fallthrough的关键字,会强制执行下面的case语句,如下代码:

// 穿过
a := false
switch a {
case false:
	fmt.Println("1") // 默认只会输出1
	fallthrough      // 一旦使用了fallthrough 则会强制执行下面的case语句
case true:
	fmt.Println("2")
	fallthrough
case false:
	fmt.Println("3")
	fallthrough
case true:
	fmt.Println("4")
	fallthrough
default:
	fmt.Println("0")
}

运行发现:

image-20230305180622918

其实就是直接无视了case一路穿透了下来。

for循环

for循环也十分简单:

// for
for i := 0; i <= 10; i++ {
	fmt.Println(i)
}

// 1加到10
sum := 0
for i := 1; i <= 10; i++ {
	sum += i
}
fmt.Println(sum)

	// 简便写法 for里只写结束条件 == while
i := 0
for i <= 5 {
	i++
}

go语言没有while循环,也没有do...while循环。因为都可以被for循环所替代。

总结

今天主要是学习了一些基本语法。考虑到自己的基础,省略了很多细枝末节。主要是用来给自己学习的知识进行系统的回顾。

标签:Println,语言,int,fmt,基础,var,Go,定义
From: https://www.cnblogs.com/wushenjiang/p/17181228.html

相关文章

  • json转golang结构
    在Golang中,我们可以使用标准库中的encoding/json包来将JSON数据转换为结构体。本文将介绍如何使用该包将JSON数据转换为Golang结构体。首先,让我们看一下JSON数据的格式。......
  • 02 Golang 基础简介
    一、标识符标识符是指定义的具有特殊意义的词,例如变量、常量、函数名等等,任何一门语言中都对自己的标识符有特殊定义的规则。在Go语言中,标识符由字母数字和下划线组成,并......
  • [Java基础] 数值运算符
    数值运算符算术运算符算术运算符说明例子结果+正号+33-负号-4-4+加5+510-减6-42*乘3*412/除5/51%模(取余)7%52++......
  • [Java基础] 流程控制结构
    流程控制结构if-elseprivatestaticStringcheckHeartBeats(intheatBeats){if(heatBeats>100){return"toofast";}elseif(he......
  • Day01.MYSQL基础语法
    1.web阶段学习方法和特点1.特点:se注重原理,web阶段注重应用,框架ssm注重思想2.数据库:sql语句是独立的。inta=10;intb=20;intc=a+b;3.课堂为主,作业为辅web开始:断奶教......
  • Go 简述
     1、Go主要用于服务端开发、定位开发“大型软件”,擅长的领域(1)服务端编程:处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理(2)网络编程:Web应用、API应......
  • GoogleTranslateIpCheck解决谷歌翻译失效
    1、问题:最近谷歌翻译一直失效,要自己频繁更换hosts的ip,很麻烦2、解决:发现了一个好用的工具,它是自动扫描国内可用的谷歌翻译IP,然后自动更换hosts的ip3、使用:到https://git......
  • 跟着鹏哥学C—初识C语言3
    1.单目运算符!逻辑反操作符-负值+正值&取地址sizeof操作数的类型长度(以字节为单位)~对一个数的二进制按位取反--前置、后置++前置、后置*间接访问操作符(解引用操作符)(类型)强制......
  • Java基础练习(数组练习及一个较难方法的练习)
    1.数组练习<1>现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位。。。依次类推。请编写程序计......
  • 华为基础命令
    命令1:重命名<Huawei>system-view //进入系统视图Entersystemview,returnuserviewwithCtrl+Z.[Huawei]sysnamesw1//设备重新命名[sw1]命令2:显示设备配置信息[sw1......