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-基础语法的更多相关文章

  1. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  2. 第二章 Python基础语法

    2.1 环境的安装 解释器:py2 / py3 (环境变量) 开发工具:pycharm 2.2 编码 编码基础 ascii ,英文.符号,8位为一个东西,2**8 unicode ,万国码,可以表示所 ...

  3. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  4. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  5. 第一章 –– Java基础语法

    第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...

  6. 第二章 JavaScript核心语法

    第二章   avaScript核心语法 一.变量的声明和赋值 JavaScript是一种弱类型语言,没有明确的数据类型,也就是在声明变量时不需要指定数据类型,变量的类型由赋给变量的值决定. 在Java ...

  7. RxJava2实战--第二章 RxJava基础知识

    第二章 RxJava基础知识 1. Observable 1.1 RxJava的使用三步骤 创建Observable 创建Observer 使用subscribe()进行订阅 Observable.j ...

  8. 第二章 impala基础使用

    第二章 impala基本使用 1.impala的使用 1.1.impala-shell语法 1.1.1.impala-shell的外部命令参数语法 不需要进入到impala-shell交互命令行当中即 ...

  9. 第2章 Python基础语法--Hello python

    第2章 基础语法 2.1 基本介绍 2.1.1 Hello python 每个语言的开始都是从”HelloWorld”开始的,我们也不例外.打开已经安装好的Python编译环境,至于Python如何安 ...

  10. 第二章:第2章PHP基础语法

    一. 基本的PHP语法如下: 1.PHP脚本可以放在文档中的任何位置,PHP脚本以<?php开始,以?>结束 <?php   //PHP代码 ?> 2.php文件的默认文件扩展 ...

随机推荐

  1. Windows下OSGEarth的编译过程

    目录 1. 依赖 1) OpenSceneGraph 2) GDAL 3) CURL 4) GEOS 5) 其他 2. 编译 1) 设置参数 2) 配置路径 3) 生成编译 3. 参考文献 1. 依赖 ...

  2. Centos6 samba服务配置

    1.在阿里虚拟机中配置包源  在ecs的 /etc/yum.repos.d 创建个 alios.repo,内容如下 [alios.$releasever.base.$basearch] name=al ...

  3. Spring 5.x 、Spring Boot 2.x 、Spring Cloud 与常用技术栈整合

    项目 GitHub 地址:https://github.com/heibaiying/spring-samples-for-all 版本说明: Spring: 5.1.3.RELEASE Spring ...

  4. unity中实现物体在一定角度范围内来回旋转

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rotate : ...

  5. 移动端布局(viewport)方法

    viewport默认有6个属性 width: 设置viewport的宽度(即之前所提及到的,浏览器的宽度详),这里可以为一个整数,又或者是字符串"width-device" ini ...

  6. iOS13中presentViewController的问题

    iOS13中presentViewController的问题 更新了Xcode11.0 beta之后,在iOS13中运行代码发现presentViewController和之前弹出的样式不一样. 会出 ...

  7. top命令输出详解

    前言 Linux下的top命令我相信大家都用过,自从我接触Linux以来就一直用top查看进程的CPU和MEM排行榜.但是top命令的其他输出结果我都没有了解,这些指标都代表什么呢,什么情况下需要关注 ...

  8. 数据结构与算法分析(C++)读书笔记

    第一章 综述 数学知识复习: 指数.对数.级数.模运算.证明方法(证明数据结构分析几轮最常用方法:归纳法.反证法) 递归简论 C++知识:类.细节.模板.矩阵.

  9. S7 300数据块中的变量指定断电保持特性

    利用DB块内变量属性的保持性,勾选上就可以保持了.300PLC数据块默认断电保持.

  10. Spring Cloud 之 Hystrix.

    一.概述  在微服务架构中,我们将系统拆分成了很多服务单元,各单元的应用间通过服务注册与订阅的方式互相依赖.由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依 ...