第二章、Go-基础语法
2.1.变量定义
(1)第一个程序helloworld
package main import(
"fmt"
) func main() {
fmt.Println("helloworld")
}
(2)变量的初始值
如果定义一个变量,没有赋值,会有一个默认的初始值
package main import(
"fmt"
) func variableZeroValue(){
//定义两个变量,没有赋值
var a int
var s string
fmt.Printf("%d %q\n",a,s) //格式化输出
} func main() {
fmt.Println("helloworld")
variableZeroValue() //a,s初始值:0 ""
}
(3)变量的定义和赋值
package main import(
"fmt"
) func variableInitialValue(){
//变量的定义和赋值
var a, b int = 3,4
var s string = "derek"
fmt.Println(a,b,s)
} func variableShorter(){
//用冒号
d,e,f := 5,false,"zhang"
fmt.Println(d,e,f)
} func main() {
variableInitialValue() // 3 4 derek
variableShorter() // 5 false zhang
}
(4)使用var()集中定义变量
package main import(
"fmt"
) //集中定义变量
var (
aa = 2
bb = true
cc = "jack"
) func main() { fmt.Println(aa,bb,cc) // 2 true jack
}
总结
- 使用var关键字:var s1,s2 string = "zhang","derek"
- 让编译器自动选择类型:var a,b,i,s1,s2 = true,false,3,"hello","world"
- 使用冒号等于定义变量:a,b,i,s1,s2 := true,false,3,"hello","world",只能在函数内使用
2.2.内建变量类型
(1)类型
- bool,string
- (u)int,(u)int8,(u)int16,(u)int32,(u)int64,unitptr
- byte,rune
- float32,float64,complex64,comlex128
(2)强制类型转换
package main import(
"fmt"
"math"
) func main() {
var a,b int = 3,4
// Sqrt必须接收float64类型,先把a,b平方的和转换成float64类型,然后在把结果转换成int类型
var c int = int(math.Sqrt(float64(a*a + b*b)))
fmt.Println(c) //5
}
2.3.常量与枚举
const数值如果不指定类型可以作为各种类型使用,也可以指定类型。
(1)常量的定义
package main import(
"fmt"
) func main() {
//不指定类型,则可以作为各种类型使用
const a,b = 3,4
//指定为string类型,则为指定的类型
const str string = "derek"
//可以放在括号不用每次写const
const (
c = false
d = "jack"
)
fmt.Println(a,b,str) //3 4 derek
fmt.Println(c,d) //false jack
}
(2)枚举类型
package main import(
"fmt"
) func main() {
const (
java = 0
python =1
golang = 2
)
fmt.Println(java,python,golang) //0 1 2
}
(3)使用iota自增值枚举类型
package main import(
"fmt"
) func main() {
const (
java = iota //iota表示这组const自增值
python
golang
javascript
)
fmt.Println(java,python,golang,javascript) //0 1 2 3
}
2.4.条件语句
(1)if语句
if语句条件里面不需要括号
package main import(
"fmt"
"io/ioutil"
) func main() {
const filename = "C:\\Users\\86158\\Desktop\\awesomeProject\\src\\abc.txt"
//ioutil.ReadFile:返回两个值,一个是读出的文件内容,一个是error信息
//if的条件里可以赋值
if contents,err := ioutil.ReadFile(filename); err != nil{
fmt.Println(err)
}else {
fmt.Printf("%s\n",contents)
}
//if条件里赋值的变量的作用域就在if语句里,像下面这样在if外面访问则报错
fmt.Println(contents)
}
(2)switch语句
- switch后可以没有表达式
- switch不需要break
- 可以直接switch多个条件
package main import(
"fmt"
) func grade(score int) string{
g := ""
switch {
case score < 0 || score > 100:
//报错信息
panic(fmt.Sprintf("错误的分数:%d",score))
case score < 60:
g = "D"
case score < 80:
g = "C"
case score < 90:
g = "B"
case score <= 100:
g = "A"
}
return g
} func main() {
fmt.Println(grade(2))
fmt.Println(grade(70))
fmt.Println(grade(83))
fmt.Println(grade(101)) //panic: 错误的分数:101
}
2.5.循环
for
- for的条件里不需要括号
- for的条件里可以省略初始条件,结束条件,递增表达式
package main import "fmt" func main() {
sum := 0
for i :=1; i <= 100; i++{
sum += i
}
fmt.Println(sum)
}
2.6.函数
特点:
- 返回值类型写在最后面
- 可返回多个值
- 函数可以作为参数
- 没有默认参数和可选参数
(1)基本用法
package main import "fmt" //函数名(函数参数,参数类型)返回值类型
func eval(a,b int, op string) int {
switch op {
case "+":
return a + b
case "-":
return a - b
case "*":
return a * b
case "/":
return a / b
default:
//错误信息
panic("unsupport operation: " + op)
}
} func main() {
fmt.Println(eval(3,5,"+")) //8
fmt.Println(eval(3,5,"*")) //15
fmt.Println(eval(3,5,"gg")) //panic: unsupport operation: gg
}
(2)两个返回值
package main import "fmt" //返回两个值
func div(a,b int) (q,r int){
return a / b, a % b
} func main() {
//接收两个值
q,r := div(13,3)
fmt.Println(q,r) //4 1
}
只接收一个返回值
package main import "fmt" //返回两个值
func div(a,b int) (q,r int){
return a / b, a % b
} func main() {
//如果只想接收一个返回值,可以用“_”
q,_ := div(13,3)
fmt.Println(q) //4
}
2.7.指针
用法
package main import "fmt" func main() {
var a int = 2
var pa *int = &a
*pa = 3
fmt.Println(a) //3
}
第二章、Go-基础语法的更多相关文章
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- 第二章 Python基础语法
2.1 环境的安装 解释器:py2 / py3 (环境变量) 开发工具:pycharm 2.2 编码 编码基础 ascii ,英文.符号,8位为一个东西,2**8 unicode ,万国码,可以表示所 ...
- web前端学习python之第一章_基础语法(二)
web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- web前端学习python之第一章_基础语法(一)
web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...
- 第一章 –– Java基础语法
第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...
- 第二章 JavaScript核心语法
第二章 avaScript核心语法 一.变量的声明和赋值 JavaScript是一种弱类型语言,没有明确的数据类型,也就是在声明变量时不需要指定数据类型,变量的类型由赋给变量的值决定. 在Java ...
- RxJava2实战--第二章 RxJava基础知识
第二章 RxJava基础知识 1. Observable 1.1 RxJava的使用三步骤 创建Observable 创建Observer 使用subscribe()进行订阅 Observable.j ...
- 第二章 impala基础使用
第二章 impala基本使用 1.impala的使用 1.1.impala-shell语法 1.1.1.impala-shell的外部命令参数语法 不需要进入到impala-shell交互命令行当中即 ...
- 第2章 Python基础语法--Hello python
第2章 基础语法 2.1 基本介绍 2.1.1 Hello python 每个语言的开始都是从”HelloWorld”开始的,我们也不例外.打开已经安装好的Python编译环境,至于Python如何安 ...
- 第二章:第2章PHP基础语法
一. 基本的PHP语法如下: 1.PHP脚本可以放在文档中的任何位置,PHP脚本以<?php开始,以?>结束 <?php //PHP代码 ?> 2.php文件的默认文件扩展 ...
随机推荐
- JavaScript 操作 DOM 总结
基本概念 DOM 是 JavaScript 操作网页的接口,全称为"文档对象模型"(Document Object Model).它的作用是将网页转为一个 JavaScript 对 ...
- SLAM方向公众号、知乎、博客上有哪些大V可以关注?
一.公众号 泡泡机器人:泡泡机器人由一帮热爱探索并立志推广机器人同时定位与地图构建(SLAM)技术的极客创办而成,通过原创文章.公开课等方式分享SLAM领域的数学理论.编程实践和学术前沿. 经典文 ...
- maven_nexus私服搭建
搭建很简单,但是新版本运行方式有所区别,于此记录一下: 1.下载程序包:http://www.sonatype.org/nexus/downloads/ 官网比较慢,下了一小时.期间在csdn花了一积 ...
- Codeforces Round #565 (Div. 3) A
A. Divide it! 题目链接:http://codeforces.com/contest/1176/problem/A 题目 You are given an integer n You ca ...
- centos7.3 格式化和挂载数据盘
本文使用 fdisk 命令对小于 2 TiB 的数据盘执行分区操作. 1. 运行 fdisk -l 命令查看实例是否有数据盘 2. 创建一个单分区数据盘,依次执行以下命令: 运行 fdisk /d ...
- 每天学点node系列-http
任何可以使用JavaScript来编写的应用,最终会由JavaScript编写.--Atwood's Law http模块概览 http模块主要用于创建http server服务,并且 支持更多特性 ...
- 微服务SpringCloud之熔断器
学习SpringCloud微服务是参考纯洁的微笑博客,看到他提到股市的熔断我也忍不住吐槽一下,记得当时实施熔断第一天就熔断了,现在想想也还是搞笑,从之前的全民炒股到现在的全民炒房,都是一个炒字,问题是 ...
- 『开发技巧』Keras自定义对象(层、评价函数与损失)
1.自定义层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 Keras2.0 ...
- java unicode补充字符带来的码点和代码单元问题
码点与代码单元 java string有两种判定字符的方式,一种是以码点,一种以代码单元,简单讲,码点就是真正的字符,代码单元是按大小即char型长度2个字节划分字符串. 所以length和chara ...
- 数据结构与算法---线索化二叉树(Threaded BinaryTree)
先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树 问题分析: 当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 } 但是 6, 8 ...