变量声明

var v1 int
var v2 string
var v3 [10]int
var v4 []int
var v5 struct {f int
}
var v6 *int
var v7 map[string] int
var v8 func(a int) int

   基本变量类型分为:int、string、数组、切片数据(动态长度数组)、结构体、指针、Map、函数等。

   var 简化写法,例子:

var (v1 intv2 string
)

变量初始化

var v1 int = 10
var v2 = 10
v3 := 10

   v1 为正常方式。v2 & v3 可以自动推导类型。v3的方式不能作用于全局变量。
   警告::= 左侧的变量不可以提前声明,比如 var v1 = 10; v1 := 10;该写法会导致编译器报错。

匿名变量

package helloworldfunc getName() (string, string, string, string) {firstName := "firstName"lastName := "lastName"nickName := "nickName"middleName := "middleName"return firstName, lastName, nickName, middleName
}
package mainimport ("fmt"
)func main(){_, _, _, middle := getName()fmt.Println(middle)
}// print -> "middleName"

常量

package mainimport ("fmt"
)func main(){const NAME = "name"fmt.Println(NAME)
}

  常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

预定义常量

true
false
iota // 常量计数器

枚举

const (Sunday = iotaMonday    Tuesday    Wednesday    Thursday    Friday    Saturday    numberOfDays        // 这个常量没有导出
)

   Go 语言中,以大写字母开头的常量在包外可见。numberOfDays 该常量只能在包内可用。

数据类型

基础数据类型

布尔类型:bool
整型:int8、byte、int16、int、uint、uintptr等
浮点类型:float32、float64
复数类型:complex64、complex128
字符串:string
字符类型:rune
错误类型:error

   int8:取值范围为 -128~127

复合数据类型

指针(pointer)
数组(array)
切片(slice)
字典(map)
通道(chan)
结构体(struct)
接口(interface)

数值运算

+
-
*
/
%

比较运算符

>
>=
<
<=
==
!=

位运算

x << y  左移    124 << 2    // 结果为496
x >> y  右移    124 >> 2    // 结果为31
x ^ y   异或    124 ^ 2     // 结果为126
x & y   与      124 & 2     // 结果为0
x | y   或      124 | 2     // 结果为126
^x      取反    ^2          // 结果为-3

遍历字符串

package mainimport ("fmt"
)func main() {str := "hello 世界!"for _, s := range str {fmt.Println(string(s))}
}

数组及数组切片

arr1 := [5]int{1,2,3,4,5}
arr2 := []int{}

   数组长度在定义之后,不能更改。数组切片可以。

流程控制

条件语句:if-else & else-if
选择语句:switch & case & select
循环语句:for & range
跳转语句:goto
其他关键字:break & continue & fallthrough

条件语句 if-else

package mainimport ("fmt"
)func main() {a := 1if a > 3 {fmt.Println("a > 3")} else {fmt.Println("a > 3 is fail")}
}

  警告:有返回值的函数中,if-else控制语句中不允许直接return

选择语句 switch

package mainimport ("fmt"
)func main() {i := 0switch i {case 0:fmt.Println("0")case 1:fmt.Println("1")case 2:fmt.Println("2")}
}
// print -> "0"

循环语句 for

package mainimport ("fmt"
)func main() {for i := 0; i < 10; i++ {fmt.Println(i)}
}
// print -> 1 ~ 9

函数

func (参数列表)(返回值列表) {函数体 & 返回语句
}

不定参数

package mainimport ("fmt"
)func myFunc(args ...int) {for _, i := range args {fmt.Println(i)}
}func main() {myFunc(1, 2, 3, 4)
}
// print -> 1 2 3 4

  警告:...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数

匿名函数

func(a, b int) int{}// 执行匿名函数
func(a,b int) int{}(1, 2)// 赋值
f := func(a ,b int) int{}

闭包

package mainimport ("fmt"
)func main() {i := 5f := func() func() {j := 10return func() {fmt.Println(i, j)}}()f()i = 10f()
}
// print -> 5   10
// print -> 10  10

错误处理

package mainimport ("errors""fmt"
)func main() {err := errors.New("this is a bug")fmt.Println(err)
}
// print -> "this is a bug"

下一篇 go语言学习初探(三)面向对象编程

go语言学习初探(二)基础语法相关推荐

  1. Go语言学习笔记—golang基础语法

    视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 golang基础语法 一.gola ...

  2. Go语言学习笔记之基础语法(一)

    目录 1. Go语言介绍 Go语言是什么 Go语言优势 Go适合用来做什么 2. Go环境搭建 通过Sublime 编译运行go程序 学习资料 3. 第一个Go程序 通过命令行运行程序 4. 基础语法 ...

  3. Vue2.0学习笔记二 基础语法

    1. Mustache语法 Mustache语法也叫插值表达式,Mustache语法式通过{{}}渲染到页面,并且数据是响应式的. 数据的响应式:数据的变化导致页面的内容随之变化 效果图: 2. 指令 ...

  4. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

  5. Go 语言快速开发入门(基础语法详解,第一节)

    Go 语言快速开发入门(基础语法详解,第一节) 一.基础语法详解,第一节 1.HelloWorld 1.1.代码编写和解释 1.2.go语言注意事项 2.Go 语言的转义字符&&Go ...

  6. C语言代码示范与讲解+C语言编程规范及基础语法+编程实战

    上一篇文章:C语言程序设计概述+C语言简介+算法概述 C语言代码示范与讲解+C语言编程规范及基础语法+编程实战 一:代码示范集加讲解 1.C语言第一个代码:打印"This is the fi ...

  7. 学习Kotlin(二)基本语法

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  8. 字节青训营Go语言学习第一天--基础语言+实战案例

    文章目录 走进Go语言基础语言 2.2基础语言-变量 2.3基础语法- if else 2.4基础语法-循环 基础语法-switch 基础语法-数组 基础语法-切片 基础语法-map 基础语法-ran ...

  9. PHP从入门到跑路(二),基础语法,数据库操作

    基础语法 前言 一, 变量定义及使用 二,数据库操作 三, php开发细节躺坑 前言 博主不会php, 是从JAVA转过来的, PHP教程总结实际开发使用, 更加偏向于实际, 理论比较薄弱, 一直想总 ...

最新文章

  1. npm全局安装和本地安装和本地开发安装(npm install --g/--save/--save-dev)
  2. hell 12 21 filename重定向的含义和区别
  3. 如何重新打开Windows防火墙提示?
  4. 统计信息在数据库中的作用_统计在行业中的作用
  5. 夜读丨72名研究生被清退:孩子,你前半生偷的懒,后半生得拼命还
  6. App.vue文件本质上也是js文件(javascript文件)
  7. jvm莫名退出问题解决
  8. ZOJ3210 A Stack or A Queue?【序列】
  9. Nb iot php_NB-IoT是什么
  10. 生活记录:给枯燥的心灵浇浇水
  11. charles+https+安卓7.0+夜神模拟器,解决安卓7.0+版本https无法抓包问题
  12. 解决无法删除文件夹的情况:文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开...
  13. 很多人不理解这个参数的 nl,nh:ESC * m nL nH d1... dk
  14. 【论文翻译】Many-Class Few-Shot Learning on Multi-Granularity Class Hierarchy
  15. stm32 火灾自动报警及联动控制源码_火灾自动报警与消防联动控制系统
  16. arm交叉编译ntpdate与服务器进行时间同步
  17. 看了后非常震撼---骗局
  18. arduino智能跟随小车
  19. 无线网络攻防实战:WEP密钥如何被攻破的(图
  20. GMSK调制解调(二)

热门文章

  1. 基于jQuery实现垂直轮播效果
  2. JS-逻辑运算符-累加累减-分支循环结构-九九乘法表
  3. JS-图片其他事件-Event对象-事件委托-DOM对象
  4. 使用【Linux操作系统】必须掌握的基本命令
  5. Kinect SDK v1.7 新特性、交互框架与新概念
  6. mysql 5.5.42,mysql-5.1.42安装完成后,出现如下错误的解决办法
  7. Html Picture
  8. 2007基于循环链表的队列的基本操作(C++)
  9. linux bash环境变量,linux-bash环境变量
  10. 面板大小调整_3天学会premiere完全自学教程-了解时间轴面板